Data entry for personal computing devices

ABSTRACT

In one aspect of the present invention the user can rapidly enter and search for text using a data entry system through a combination of entering one or more characters on a digitally displayed keyboard with a pointing device and using a search list to obtain a list of completion candidates. The user can activate the search list to obtain a list of completion candidates at any time while entering a partial text entry with the data entry system. When the search list is active, a list of completion candidates is displayed on a graphical user interface for the user to select from and the user can perform one of several actions. The user can deactivate the search list and return to modifying the current partial text entry and other text. The user can select one of the completion candidates in the search list and use the selected completion candidate to replace the partial text entry which the user is currently entering. When the user deactivates the interactive search list, the user can immediately continue adding to or modifying the current partial text entry being entered, and may re-invoke the search list to further search for completion candidates based on the modified partial text entry. In the second case, the selected completion candidate is used to replace the partial text entry that the user is currently entering, and the data entry system begins monitoring for a new partial text entry from the user.

This application is a continuation of International Application No.PCT/CA00/00285 filed Mar. 15, 2000, which is designated, for thepurposes of the United States of America, a continuation-in-part of U.S.patent application Ser. No. 09/272,700 filed Mar. 18, 1999. Thisapplication claims the benefit of the aforementioned InternationalApplication No. PCT/CA00/00285 and U.S. patent application Ser. No.09/272,700.

FIELD OF THE INVENTION

The present invention relates generally to computer-assisted data entryand more particularly to a method, system, and apparatus forcomputer-assisted text generation and entry using a pointing device witha personal computing device, and to computer-readable media havingexecutable instructions for supporting text generation and entry using apointing device.

BACKGROUND OF THE INVENTION

The wide-spread adoption of miniaturized personal computing devices,such as hand-held devices and personal digital assistants (PDAs), hasled to an increasing use of devices to send and receive text and data.One example of this trend is pen-based computing, wherein users entertext and commands into hand-held personal computers via atouch-sensitive screen. While such pen-based computing is popular,especially with the increasing power of miniature computing devices, itdoes present challenges to a user entering data in an applicationrunning on the hand-held device. For instance, many hand-held computersand personal digital assistants require that the user enter dataaccording to a predetermined scripting style, such as with thePalmPilot™ series of PDAs. Other hand-held devices provide a handwritingrecognition system which requires that the computer learn the user'shandwriting style. While such data entry mechanisms are useful, they arerelatively difficult to use and complex to learn and can be prone toerror in the event the user deviates from the predetermined scriptingstyle or the user's traditional handwriting style.

Many pen-based computing systems, both large and small, offer the userthe option to enter text using an on-screen digital keyboard. On-screendigital keyboards are typically miniaturized replica of conventionalfull-sized physical keyboards, such as QWERTY keyboards. Many on-screenkeyboards have shown themselves to be less than efficient for enteringtext. When using a pointing device such as a pen, a user is typicallyrequired to enter text one character at a time by tapping out individualcharacter selections from the on-screen keyboard. This “hunt-and-peck”method of typing with a single pointing device is time-consuming,especially when a user is entering large amounts of data.

Another common challenge when entering data into a personal computingdevice with a single pointing device such as a pen or stylus, and inparticular when entering text, is that each letter making up the word orphrase must be entered manually. The longer the word or phrase, thegreater the amount of manual entry required.

Text completion systems have been developed in an effort to assist userswith text entry. In general, these systems predict and suggest acomplete word completion based on a partial text entry entered by auser. These systems allow a user to type in the partial text entry andthen accept a predicted text completion for the partial text entry. Thisavoids the keystrokes that would otherwise be required to type thecomplete text desired by a user. While such text completion systemsprovide some basic assistance for users to more rapidly enter text thanwould be required if every character of the desired text had to be typedin independently, there remains a need in the art for a more flexibletext completion system for use with a single pointing device. It wouldalso be desirable for such a text completion system to employ aconvenient selection technique which would reduce the amount of movementof the pointing device required to enter text into a computer. It wouldfurther be desirable if such a system were applicable to both large andsmall personal computing devices.

Another problem in the art is that soft, or digital, keyboards havetended to be continually displayed so as to permanently consume screenspace or have needed to be manually invoked and dismissed by the user.It would be desirable if a digital keyboard could automatically appearand disappear as required.

SUMMARY OF THE INVENTION

The above and related desires are addressed in the present invention byproviding a novel and non-obvious method, system and computer-readableinstructions for computer-assisted text generation and entry using apointing device with a personal computing device.

In one aspect of the present invention the user can rapidly enter andsearch for text using a data entry system through a combination ofentering one or more characters on a digitally displayed keyboard with apointing device and using a search list to obtain a list of completioncandidates. The user can activate the search list to obtain a list ofcompletion candidates at any time while entering a partial text entrywith the data entry system. When the search list is active, a list ofcompletion candidates is displayed on a graphical user interface for theuser to select from and the user can perform one of several actions. Theuser can deactivate the search list and return to modifying the currentpartial text entry and other text. The user can select one of thecompletion candidates in the search list and use the selected completioncandidate to replace the partial text entry which the user is currentlyentering. When the user deactivates the interactive search list, theuser can immediately continue adding to or modifying the current partialtext entry being entered, and may re-invoke the search list to furthersearch for completion candidates based on the modified partial textentry. In the second case, the selected completion candidate is used toreplace the partial text entry that the user is currently entering, andthe data entry system begins monitoring for a new partial text entryfrom the user.

In one embodiment, when the search list is active the user may use oneof the completion candidates in the search list to initiate a furtherautomated search to obtain a more refined list of completion candidates.In this embodiment, multi-level search lists and searching are availableto help accelerate completion of a partial text entry. As a result, theuser can automatically initiate an iterative search wherein a completioncandidate listed in the search list is used as the new partial textentry to dynamically obtain a new list of completion candidates, whichis then displayed in the search list. The automated ability to use thesearch list to obtain a refined list of completion candidates allows theuser to quickly make good use of search results that are only partiallysuccessful. When the search list is revised with a new list ofcompletion candidates, the user can then choose one of the completioncandidates in the new list, or the user can repeat the iterative searchprocess once again by choosing one of the completion candidates in thenew list and activating a further iterative search. In addition, theuser may return to keyboard entry with the last completion candidateselected by the user in the previous iteration of the search list. Thislatter feature provides the user with the convenience of being able toautomatically and seamlessly continue entering the desired word, phrase,or character sequence using the last completion candidate selected bythe user in the previous iteration of the interactive search list. Thus,the user can quickly and easily replace the user's current partial textentry with a partially successful completion candidate and continuebuilding upon or modifying this partial completion candidate using thekeyboard while at the same time allowing the user the flexibility tore-enter the search list at any time.

In another aspect of the present invention, there is provided a methodof processing text entered into a personal computing device with apointing device. With this method, a partial text entry is received andused to obtain a dynamically generated list of completion candidates.The list of completion candidates is displayed in a search list within agraphical user interface. A user input signal associated with thepointing device is received. If the user input signal corresponds to afirst type of user selection with the pointing device, then the searchlist is deactivated. If the user input signal corresponds to a secondtype of user selection with the pointing device, then the partial textentry is replaced with a completion candidate from the search list.

In one embodiment, if the user input signal corresponds to a third typeof user selection with the pointing device, then a refined list ofcompletion candidates is dynamically obtained based on one of thecompletion candidates from the search list. The refined list isdisplayed in the search list for further user selection.

In another aspect of the present invention, there is provided a methodof processing an input string at least partially entered into a personalcomputing device with a pointing device. This aspect includes performinga search of a set of completion candidates to locate a plurality ofpossible completion candidates for completing the input string inresponse to a prior located possible completion candidate or a characterselectable by a user. At least one of the plurality of possiblecompletion candidates and characters selectable by the user aredisplayed.

In another aspect of the present invention, a method is provided ofuser-based text entry. With this aspect, a set of position coordinatesfor a pointing device is monitored relative to a user interface and adigital keyboard is displayed on the user interface at a last known setof coordinates for the pointing device whenever the digital keyboard isactivated for user input.

In another aspect of the present invention, a method is provided forinterchanging the display of a digital keyboard and a search list. Thedigital keyboard is displayed on a user interface when a user isentering text a keystroke at a time. As the digital keyboard isdisplayed, user input is monitored. If the user input corresponds toactivating the search list, then the digital keyboard is replaced withthe search list. If the user input corresponds to terminating use of thesearch list once activated, then the search list is replaced with thedigital keyboard.

In another aspect of the present invention, a digital keyboard isconfigured to include a plurality of characters assigned topredetermined locations within a layout for the digital keyboardaccording to a predetermined frequency distribution associated with theplurality of characters. The plurality of characters includes lesscommonly used characters and more commonly used characters based on thepredetermined frequency distribution. The digital keyboard is displayedon a graphical user interface with the less commonly used charactersdisplayed substantially further from a center of the digital keyboardthan the more commonly used characters.

In another aspect of the present invention there is provided a systemfor computer-assisted text generation and entry. The system includes aninput interface, a processing unit and a computer-readable medium. Theinput interface receives user input signals based on actions with apointing device. The computer-readable medium contains computer-readableinstructions for directing the processing unit to assist with textgeneration and entry based on user input received via the inputinterface with the pointing device. The computer-readable mediumincludes instructions for receiving a partial text entry; for obtaininga dynamically generated list of completion candidates based on thepartial text entry; for displaying the list of completion candidates ina search list on a display device; and for receiving a user input signalassociated with the pointing device from the input interface. If theuser input signal corresponds to a first type of user selection with thepointing device, the computer-readable instructions are programmed todeactivate the search list. If the user input signal corresponds to asecond type of user selection with the pointing device, thecomputer-readable instructions are programmed to replace the partialtext entry with a completion candidate from the search list. Otheraspects and features of the present invention will become apparent tothose ordinarily skilled in the art upon review of the followingdescription of specific embodiments of the invention in conjunction withthe accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

In the accompanying drawings which illustrate embodiments of theinvention,

FIG. 1 is a schematic diagram of a personal computing device loaded witha data entry system, according to a first embodiment of the invention;

FIG. 2 is a schematic diagram of the data entry system of the firstembodiment;

FIG. 3 is a schematic representation illustrating the display of adigital keyboard on a graphical user interface within the personalcomputing device of the first embodiment;

FIG. 4 is a schematic representation of a data structure for adictionary according to the first embodiment;

FIG. 5 is a schematic representation illustrating the interchangeabledisplay of the digital keyboard and an interactive search list accordingto the first embodiment;

FIG. 5A is a schematic representation illustrating potential completioncandidates for retrieval and display in the interactive search listaccording to an example of the use of the first embodiment;

FIG. 6 is a flow diagram illustrating, by way of example from the user'sperspective, the use of the data entry system of the first embodiment;

FIG. 7 to 9 are flow diagrams illustrating the flow of operation of thedata entry system according to the first embodiment;

FIG. 10 is a schematic representation of an alternative embodiment of adigital keyboard layout according to the present invention;

FIG. 11 is a schematic representation of another alternative embodimentof a digital keyboard layout according to the present invention;

FIG. 12 is a schematic representation of another alternative embodimentof a digital keyboard layout according to the present invention;

FIG. 13 is a schematic representation of another configuration of adigital keyboard according to an embodiment of the present invention;

FIG. 14 is a schematic representation of the layout for the interactivesearch list according to the first embodiment;

FIG. 15 to 18 are schematic representations of alternative layouts forthe interactive search list according to alternate embodiments of thepresent invention;

FIG. 19 is a schematic representation of a configuration for the digitalkeyboard and the interactive search list according to an embodiment ofthe present invention;

FIG. 20 is a schematic representation of an alternative configurationfor the digital keyboard according to an embodiment of the presentinvention;

FIG. 21 to 22 are flow diagrams illustrating the flow of operation ofthe data entry system according to an alternative embodiment of thepresent invention;

FIG. 23 to 24 are flow diagrams illustrating the flow of operation ofthe data entry system according to an alternative embodiment of thepresent invention;

FIG. 25 to 26 are flow diagrams illustrating the flow of operation ofthe data entry system according to an alternative embodiment of thepresent invention;

FIG. 27 is a schematic representation of an alternative configurationfor the digital keyboard according to an embodiment of the presentinvention.

It will be appreciated that for simplicity and clarity of illustration,elements illustrated in the accompanying drawings have not necessarilybeen drawn to scale. For example, the dimensions of some of the elementsare exaggerated relative to other elements for clarity. Further, whereconsidered appropriate, reference numerals and labels have been repeatedamong the drawings to indicate corresponding or analogous elements andfeatures.

DETAILED DESCRIPTION

Reference will now be made in detail to implementations and embodimentsof the invention, examples of which are illustrated in the accompanyingdrawings.

Introduction

In one aspect of the present invention the user can rapidly enter andsearch for text using a data entry system through a combination ofentering one or more characters on a digitally displayed keyboard with apointing device and using an interactive search list to dynamicallyobtain a list of completion candidates. The user can activate theinteractive search list to obtain a dynamically generated list ofcompletion candidates at any time while entering a partial text entrywith the data entry system. In this specification “partial text entry”means a sequence of one or more characters making up a leading portionof a word, phrase or character sequence. When the interactive searchlist is active, a dynamically generated list of completion candidates isdisplayed on a graphical user interface for the user to select from. Thelist of completion candidates is retrieved from at least one dictionaryby a candidate prediction system which retrieves completion candidatesthat are most likely to contain the completion candidate desired by theuser. Candidate prediction is based on statistical measures ranking theentries within the dictionary relative to each other. When theinteractive search list is active, the user can perform one of severalactions with the data entry system including any of the following:

-   (1) the user can deactivate the interactive search list and return    to modifying the current partial text entry and other text; or-   (2) the user can select one of the completion candidates in the    interactive search list and use the selected completion candidate to    replace the partial text entry which the user is currently entering.

In the first case, when the user deactivates the interactive searchlist, the user can immediately continue adding to or modifying thecurrent partial text entry being entered, and may re-invoke theinteractive search list to further search for completion candidatesbased on the modified partial text entry. In the second case, theselected completion candidate is used to replace the partial text entrythat the user is currently entering, and the data entry system beginsmonitoring for a new partial text entry (of a word, phrase, or charactersequence) from the user.

In certain embodiments of the present invention, as illustrated furtherbelow, a third action available to the user when the interactive searchlist is activated is to:

-   (3) use one of the completion candidates in the interactive search    list to initiate a further automated search to obtain a more refined    dynamic list of completion candidates from the dictionary.

In the third case, multi-level search lists and searching are availableto help accelerate completion of a partial text entry. In this lattercase, the user can automatically initiate an iterative search wherein acompletion candidate listed in the interactive search list is used asthe new partial text entry to dynamically obtain a new list ofcompletion candidates, which is then displayed in an updated interactivesearch list. The automated ability to use the interactive search list todynamically obtain a refined list of completion candidates allows theuser to quickly make good use of search results that are only partiallysuccessful. When the interactive search list is updated with a new listof completion candidates, the user can then choose one of the completioncandidates in the new list, or the user can repeat the iterative searchprocess once again by choosing one of the completion candidates in thenew list and activating a further iterative search. In addition, theuser may return to keyboard entry with the last completion candidateselected by the user in the previous iteration of the interactive searchlist. This latter feature provides the user with the convenience ofbeing able to automatically and seamlessly continue entering the desiredword, phrase, or character sequence using the last completion candidateselected by the user in the previous iteration of the interactive searchlist. Thus, the user can quickly and easily replace the user's currentpartial text entry with a partially successful completion candidate andcontinue building upon or modifying this partial completion candidateusing the keyboard while at the same time allowing the user theflexibility to re-enter the interactive search list at any time.

As discussed further in this specification, other actions may also becarried out by the user when the interactive search list is active.

Operation Environment

FIG. 1 shows a schematic diagram of a personal computing device 10 fortext entry according to a first embodiment of the invention. Thepersonal computing device 10 shown in FIG. 1 contains at least oneprocessing unit 12 (such as a CPU or a similar processor ormultiprocessor) connected by a bus to a computer-readable medium 16. Thecomputer-readable medium 16 provides a memory store for software anddata residing within the personal computing device 10. Thecomputer-readable medium 16 can include one or more types ofcomputer-readable media including volatile memory such as Random AccessMemory (RAM), and non-volatile memory, such as a hard disk or Read OnlyMemory (ROM). Preferably, the computer-readable medium 16 includes acombination of volatile and non-volatile memory. In the firstembodiment, the computer-readable medium 16 contains an operatingsystem, a data entry system 26 and an application 27 receptive touser-based text entry such as a word processor. The computer-readablemedium 16 may also store alternative or other applications such as abrowser or micro-browser, an e-mail application, and/or other end-userapplications.

The operating system can be any of several well-known operating systemsdepending on the personal computing device used. For example, forhand-held devices, the operating system can be PalmOS™, Windows CE™, oran equivalent operating system. For larger systems, such as with workstations or desktop computers, a more robust operating system may beused such as, for example, Windows 95™, Windows 98™, Windows NT™,Windows 2000™, MacOS™, UNIX, Linux or the like. For the purposes of thefirst embodiment, the operating system is PalmOS™.

The data entry system 26 is implemented as software that runs on theprocessing unit 12 to support computer-assisted text generation andentry for the user, although in other alternatives the data entry system26 can be implemented as computer-readable instructions in firmware orembedded in hardware components. In the first embodiment, electronictext and documents are generated and maintained by the application 27and the user authors and edits the electronic text and documents withthe data entry system 26 which communicates with the application 27through an application programming interface (API). This allows the dataentry system 26 to be portable so that it can be used by one or moreapplications to accept text and data entry from the user. As analternative, the data entry system 26 may be integrated into part of anapplication.

The personal computing device 10 includes a graphical display device 15and a hardware input interface 17 receptive to user input from apointing device. In this specification, the term “pointing device” meansan input device that allows a user to select one choice amongst one ormany choices (a user-based selection). Some pointing devices enable auser to make user-based selections by pointing to a desired choice andinclude, by way of example, a pen, stylus, or finger. More generally,pointing devices capable of supporting user-based selections include, byway of example, the pointing devices above capable of pointing, as wellas other input devices such as a mouse, trackball or the like.

The graphical display device 15 is connected to and controlled by theprocessing unit 12 via a video display circuit 13. The graphical displaydevice 15 may be a CRT, a liquid crystal display, or an equivalentcomputer display.

In the first embodiment, the personal computing device 10 is a personaldigital assistant wherein the graphical display device 15 and thehardware input interface 17 are combined in the form of atouch-sensitive screen 14 that serves both as a graphical display 15 andas an input interface receptive to generating coordinate positionsignals in response to contact from a pointing device such as a pen orstylus. It will be appreciated by those skilled in the art that thepersonal computing device 10 is represented in the following discussionas a personal digital assistant for illustration purposes only, and thatthe invention may be practised with other personal computing devicesincluding hand-held devices, personal computers and othermicroprocessor-based electronic devices, mobile telephones, internetappliances, and embedded devices, having a suitable graphical displayand an input interface receptive to user input via a pen, stylus,finger, mouse, or an equivalent pointing device that allows the user toselect one choice from many. Other types of equivalent personalcomputing devices to which the features and aspects of the presentinvention are applicable include, by way of example, an internetappliance controlled via a remote control (for instance, running anInternet service through a television via a set top box and a remotecontrol). In other embodiments, the hardware input interface 17 may be adigitising tablet, a pressure-sensitive input surface or a proximitysensing input surface. It will also be appreciated that the personalcomputing device 10 may be powered by an internal (18) or external powersource.

As shown in FIG. 2, the data entry system 26 includes computer-readableinstructions for a digital keyboard 28, a candidate prediction system32, a dictionary 20, and an interactive search list 30. The digitalkeyboard 28 provides an interface for the user to enter text and datainto the personal computing device 10 (FIG. 1). As the user enters incharacters via the digital keyboard 28 to construct a word, phrase, orcharacter sequence, the characters entered by the user are stored in asearch string as a partial text entry. The search string is used by thecandidate prediction system 32 to search the dictionary 20 forcompletion candidates that begin with the current partial text entrybeing stored in the search string. The interactive search list 30 isused to display for user selection the list of completion candidatesretrieved by the candidate prediction system 32. In the firstembodiment, the data entry system 26 supports gesture-based user inputfor the selection of completion candidates from the interactive searchlist 30 as will be described in further detail below.

Digital Keyboard

As illustrated in FIG. 3, an image of the digital keyboard 28 isdisplayed on a graphical user interface 34 within the screen area of thetouch-sensitive screen 14 once the data entry system 26 is initialisedand ready to receive input from the user. The digital keyboard 28contains a plurality of keys each of which is associated with at leastone character from a set of characters. For example, when the Englishalphabet or a character set containing the English alphabet is used,each key on the digital keyboard 28 can contain one or more letters fromthe English alphabet. It should be noted that reference to the Englishalphabet is by way of example only, and that the digital keyboard 28 canbe configured to contain and display any set of characters which theuser may then select and use to enter text into the personal computingdevice 10. The terms “character set” and “set of characters” refer inthis specification to a set containing a plurality of letters, numbersand/or other typographic symbols. Examples of character sets include,but are not limited to, one or more alphabets of a written language(e.g. English, French, German, Spanish, Chinese, or Japanese), andbinary-coded character sets such as ASCII (American Standard Code forInformation Interchange), EBCDIC (Extended Binary Coded DecimalInterexchange Code), and BCD (Binary Coded Decimal).

In the first embodiment, the digital keyboard 28 displays digital keyscontaining characters from the English alphabet along with specialcharacters selected from the ASCII character set. Words, phrases, andcharacter sequences can be typed into an electronic document orelectronic text by simply using the pointing device to tap or select insequence each key for the desired word, phrase, or character sequence.As will be discussed further below, the user can also use the digitalkeyboard 28 to initiate an automated search for completion candidates tomore rapidly and flexibly enter words, phrases, and/or charactersequences in an automated manner. As will also be discussed later inthis specification, several enhancements to the digital keyboard 28 maybe implemented to further enhance the user's ability to quickly,efficiently, and flexibly enter text using a pointing device.

Dictionary

FIG. 4 shows a sample data structure for the dictionary 20. Preferably,as in the first embodiment, the dictionary 20 contains completioncandidates with weight values for ranking completion candidates relativeto each other. The dictionary 20 contains a plurality of entries, witheach entry having a completion candidate field 22 for storing acompletion candidate and a weight field 24 for storing a numeric valueassociated with the completion candidate stored in a correspondingcompletion candidate field 22. Each completion candidate stored in thedictionary 20 represents a word, phrase, or character sequence accordingto a particular language. Character sequences may include, but are notlimited to, word continuations. Word continuations represent a leadingpart of a word, but not an entire word. In the first embodiment wherethe dictionary is based on American english, word continuations mayinclude, by way of example, such common word prefixes as “com”, “con”,“dis”, “expl”, “inter”, “mis”, “para”, “pre” “syn”, “tele”, “trans” and“univers”. Obtaining a list of completion candidates which can includecommon word prefixes reduces user effort in terms of the number of stepsrequired to generate a desired text entry. Furthermore, certaincharacter combinations such as word prefixes are shared across multiplecompletion candidates which can speed up learning of the locations ofcompletion candidates within sub-levels of the interactive search list30 when multi-level searching (i.e. iterative searching) is available.

Each weight field 24 stores a weight value for ranking the correspondingcompletion candidate stored in the corresponding completion candidatefield 22 with other completion candidates in the dictionary 20. Theweight value stored in a weight field 24 may be based on one of manymetrics. By way of example, each weight field 24 may contain a valuerepresenting a degree of common usage of the completion candidate storedin the corresponding completion candidate field 22 relative to the othercompletion candidates in the dictionary 20. As another example, theweight fields 24 may contain numeric values based on what words orphrase came before the completion candidate stored in the correspondingcompletion candidate from an analysis of a large corpus of text. Eachweight field 24 may also be supplemented with one or more relatedfields.

Candidate Prediction System

Referring to FIG. 2, the candidate prediction system 32 is programmed todynamically search the dictionary 20 for completion candidates thatbegin with the partial text entry entered by the user. The candidateprediction system 32 retrieves completion candidates from the dictionary20 by determining which dictionary entries are more likely to be theones that the user is attempting to type. In the first embodiment, thecompletion candidates are obtained from the dictionary 20 on the basisof frequency values stored in the weight field 24 for each entry. In thefirst embodiment, completion candidates having the highest weight valuesare retrieved. The frequency values represent the frequency of usage ofthe entries relative to each other. These frequency values may bepredetermined on the basis of an analysis of a large corpus of text ormay be dynamically generated or modified on the basis of the specificuser's usage of words, phrases, and/or character sequences through thedata entry system 26. Other statistical measures may also be employed toenhance the candidate prediction system 32, such as ranking informationor identifying the frequency with which an entry in the dictionary 20follows any of the other entries in the dictionary 20.

Preferably, the candidate prediction system 32 retrieves all possiblecompletion candidates limited by one or more predetermined metrics. Inthe first embodiment, the total number of completion candidatesretrieved is limited by a predetermined maximum number of displayablecompletion candidates. The maximum number of completion candidatesretrieved by the candidate prediction system 32 is preferably a smallbut significant number sufficient enough to provide the user with asmany potential candidates as possible without unduly saturating the userwith an excessive number of candidates and without unduly delaying theuser's ability to quickly review and select from the candidatesselected. The maximum number of completion candidates is also preferablysufficiently large enough to provide a variety of completion candidates(if available) for the user to choose from so as to avoid an excessiveamount of multi-level searching to complete a partial text entry. In thecase of the first embodiment, the maximum number of displayablecompletion candidates is set to five. The data entry system 26 can beconfigured by the user to present a greater or lesser number ofcompletion candidates. Preferably, the completion candidates aredisplayable in a configuration that can also be selected by the user.Making the number of completion candidates that can be displayed auser-configurable feature provides enhanced capabilities forcomputer-assisted text generation and entry with the data entry system26.

Interactive Search List

The interactive search list 30 receives completion candidates retrievedfrom the dictionary 20 by the candidate prediction system 32 andpresents the user with a list of these completion candidates. Theinteractive search list 30 can be displayed to the user in any ofseveral different ways depending on which options the data entry system26 has been programmed with and which of those options have beenselected by the user, as will be discussed later in this specification.In the first embodiment, the interactive search list 30 is displayed onthe touch-sensitive screen 14 as an interactive vertical list ofcompletion candidates. As described further below, the interactivesearch list 30 is programmed to support multi-level searches so that theuser can quickly use a completion candidate from one level of searchresults to drill deeper into the dictionary 20 for a narrower set ofcompletion candidates.

In the first embodiment, the digital keyboard 28 and the interactivesearch list 30 are also interchangeably displayed on the graphical userinterface 34, as further illustrated in FIG. 5. When the digitalkeyboard 28 and the interactive search list 30 are interchangeable, theuser can easily and quickly swap between entering characters orotherwise modifying a partial text entry from the digital keyboard 28and using the interactive search list 30 to rapidly and flexiblycomplete the entry of words, phrases, and/or character sequences. Whenthe digital keyboard 28 and the interactive search list areinterchangeable, the image of the digital keyboard 28 and the image ofthe interactive search list 30 share substantially the same display areaon the graphical user interface 34. The data entry system 26 for thefirst embodiment is preferably programmed to automatically swap betweenthe digital keyboard 28 and the interactive search list 30 dependingupon the input provided by user from the pointing device. This latterfeature minimizes disruption to the user's attention to the data entryprocess since the user's attention remains focussed on the same regionof the graphical user interface 34 for both the digital keyboard 28 andthe interactive search list 30. Interchanging the display of the digitalkeyboard 28 and the interactive search list 30 within the graphical userinterface 34 provides for a space-efficient layout for the use of thedata entry system 26 on the touch-sensitive screen 14. Theinterchangeability of the digital keyboard 28 and the interactive searchlist 30 can also minimize hand movement as the user switches betweenusing the digital keyboard 28 and the interactive search list 30 withouthaving to move the pointing device to another part of thetouch-sensitive screen 14 (or, more generally, without having to movethe pointing device to another part of the hardware input interface).This arrangement can be particularly useful for smaller personalcomputing devices such as PDAs or other hand-held devices, or where theamount of space on the graphical user interface 34 used by the dataentry system 26 needs to be minimized.

The interactive search list 30 enables the user to more rapidly andflexibly complete the entry of words, phrases, and/or charactersequences than would otherwise be required if the user were to simplytype in each individual character of the desired entry.

Overview of Methodology

The basic data entry methodology of the present invention as applied toa personal computing device 10 of the first embodiment will now bedescribed. In what follows, reference is made to FIG. 1 to 5.

In the first embodiment, the user interfaces with the personal computingdevice 10 via the touch-sensitive screen 14 using a pen as a pointingdevice. However, it should be noted that the following methodology canbe used with various other pointing devices, such as a stylus, finger,track ball, or mouse. If a mouse or an equivalent pointing device isused in place of a pen, stylus, or finger, then for the first embodimentthe act of depressing a mouse button should be considered equivalent totouching the touch-sensitive screen 14 or touch pad with a stylus, pen,or finger, and similarly, releasing a depressed mouse button should beconsidered equivalent to lifting the stylus, pen, finger or otherpointing device from the touch-sensitive screen 14 (or a touch pad orpressure sensitive pad).

With the data entry system 26 of the first embodiment two primary entrymodes are available to the user: a keyboard mode and a search mode. Inthe keyboard mode, the user can enter text a character (or keystroke) ata time by simply pointing and selecting on keys on the digital keyboard28 with the pointing device. With each selection of a key on the digitalkeyboard 28, the one or more characters that are associated with thatkey are forwarded to the application 27 for entry into text in, forexample, a document or data entry field. In the search mode, the usercan search for and select amongst completion candidate suggestions forthe completion of a word, phrase, or character sequence as furtherdescribed below.

In the first embodiment, when the user begins entering a word, phrase orcharacter sequence using the digital keyboard 28, the candidateprediction system 32 automatically begins searching the dictionary 20for candidate words, phrases, and/or character sequences that the usermay be attempting to enter. The searching of the dictionary 20 performedby the candidate prediction system 20 begins automatically in responseto the emerging character sequence entered by the user. This is done bysearching the dictionary 20 for completion candidates that begin withthe leading character or characters which the user has entered (i.e. thepartial text entry). The leading characters manually entered by the userwith the pointing device are stored temporarily as a search string. Thesearch string is used by the candidate prediction system 32 to searchthe dictionary 20 for potential completion candidates. The candidateprediction system 32 retrieves completion candidates on the basis ofwhich entries in the dictionary 20 are most likely to contain thecompletion candidate that the user is attempting to type based on thepartial text entry currently entered as indicated by the weight fieldsin the dictionary.

The completion candidates retrieved from the dictionary 20 by thecandidate prediction system 32 are provided to the interactive searchlist logic which causes the interactive search list 30 to be produced.As each new list of completion candidates is produced by the candidateprediction system 32 the interactive search list logic produces arevised list of completion candidates as the user adds or deletescharacters to or from the partial text entry with the digital keyboard28. Whether the interactive search list 30 is displayed on the graphicaluser interface 34, however, depends on whether or not the interactivesearch list 30 has been activated. In the first embodiment, the user mayactivate the interactive search list 30 by pausing for a predetermineddelay period L1 with the pointing device in a selection made by touchingdown on a key on the digital keyboard 28 containing one or morecharacters. The amount of time that the user must pause with the keyselected is a user-configurable option. Typically, the delay chosen willbe less than one second, although the delay may be configured to anytime period the user desires. As soon as the user pauses on a selectedkey for the delay period L1, the interactive search list 30 becomesactive. When the interactive search list 30 is activated, the entry modefor the data entry system 26 changes from the keyboard mode to thesearch mode. In addition, when the interactive search list 30 isactivated in the first embodiment, the image of the digital keyboard 28is cleared from the graphical user interface 34 and replaced by an imageof the interactive search list 30.

Although the interactive search list 30 is updated continuously in thefirst embodiment, in an alternative configuration the interactive searchlist 30 may be generated once the user activates the interactive searchlist 30 by pausing on a selected key on the digital keyboard 28. In thisalternative configuration, the interactive search list 30 is revisedeach time the user calls up a new or modified interactive search list30.

Once the user has activated the display of the interactive search list30 containing a list of completion candidates, the data entry system 26provides the user with the flexibility to proceed with one of severaloperations using the pointing device. With the interactive search list30 displayed and active, the user can do any one of the following:

-   (1) the user can deactivate the interactive search list 30 and    return to modifying the current partial text entry and other text;    or-   (2) the user can select one of the completion candidates in the    interactive search list 30 and use the selected completion candidate    to replace the partial text entry which the user is currently    entering; or-   (3) the user can use one of the completion candidates in the    interactive search list 30 to initiate a further automated search to    dynamically obtain a more refined list of completion candidates from    the dictionary 20; or-   (4) the user can scroll or cycle through the list of completion    candidates displayed in the interactive search list 30, selecting    and deselecting one completion candidate at a time as the user    decides which of the completion candidates (if any) will be used to    complete the current partial text entry or to initiate further    searching; or-   (5) the user can gesture to or pause in a “dead zone” within the    graphical user interface 34 for any length of time without    triggering any further action by the data entry system 26 so as to    pause to consider whether to continue using the displayed    interactive search list 30 or to carry out one of the other    operations listed above.

The user's action with the pointing device generates user input signalswhich are monitored and analyzed by the data entry system 26 todetermine the type of user selection or action being made. Whichoperation is executed by the data entry system 26 once the interactivesearch list 30 is activated depends on what action the user takes withthe pointing device.

If the user does not want to select any of the completion candidatespresented in the interactive search list 30 and wishes to continueentering further characters or to otherwise modify the partial textentry from the digital keyboard 28, then with the interactive searchlist 30 active and displayed on the graphical user interface 34, theuser may lift the pointing device without any significant movement ormay lift the pointing device after dragging it to or returning it to adead zone. Either of these actions causes the hardware input interface17 to generate a user input signal which serves as an indication to thedata entry system 26 that the user wishes to deactivate the interactivesearch list 30 and return to modifying the current partial text entrymanually with the digital keyboard 28. In the first embodiment, when theinteractive search list 30 is deactivated, the image of the interactivesearch list 30 is cleared from the graphical user interface 34 andreplaced with the image of the digital keyboard 28 which is enabled forfurther use by the user. This allows the user to smoothly return tousing the digital keyboard 28 in keyboard mode without having torelocate the pointing device. Once in keyboard mode, the user mayreinitiate searching with the interactive search list 30 to obtainfurther completion candidates by pausing once again on a subsequentlyselected key (or character) on the digital keyboard 28 with the pointingdevice.

A completion candidate from the interactive search list 30 is selectedby the user by generating a gesture with the pointing device. For thepurposes of this specification the term “gesture” refers to a motionwith the pointing device when the pointing device is in an active state.In general, motions making up gestures may be linear or in anothercomputer-recognizable pattern. For the first embodiment shown in FIG. 1to 5 and for variations thereof, a gesture is a motion with the pointingdevice in a particular direction for at least a minimum distance whenthe pointing device is in an active state. The minimum distance is usedby the data entry system 26 in the first embodiment to ignore small,insignificant gestures with the pointing device. This minimizes falseselections arising from inadvertent movements with the pointing device.

In the first embodiment, the pointing device is in an active state whenthe pointing device is held to the touch-sensitive screen 14. Inalternative variations of the graphical display device 15 and thehardware input interface 17, other conditions can be used to identifywhen the pointing device is in an active state and are consideredequivalent. For example, with a pressure-sensitive pad, the pointingdevice is in an active state when the pointing device is either incontact with the pressure-sensitive pad or depressed on thepressure-sensitive pad with at least a measurable amount of pressure.Alternatively, when the pointing device is a mouse, it is in an activestate when a button on the mouse is pressed.

The data entry system 26 monitors the gestures made with the pointingdevice to determine when and if a completion candidate in theinteractive search list 30 has been selected. In the first embodimentthe data entry system 26 does this by monitoring the current positioncoordinates of the pointing device on the touch-sensitive screen 14relative to a point of origin generated when the pointing device firstactivates the interactive search list 30. The current positioncoordinates of the pointing device are monitored so long as the pointingdevice remains in contact with the touch-sensitive screen 14. As thecurrent position coordinates are received, the data entry system 26generates a vector using the current position coordinates of thepointing device and the point of origin. This vector is used by the dataentry system 26 to determine if and when a particular completioncandidate in the interactive search list 30 has been selected. The dataentry system 26 is programmed to associate certain types of vectors withcertain entries in the interactive search list 30. Each entry in theinteractive search list 30 may have associated with it one or morepredetermined vectors. When the vector formed by the user matches such apredetermined vector, the data entry system 26 recognizes that the useris selecting the completion candidate displayed in the correspondingentry of the interactive search list 30. If the data entry system 26determines that the vector currently being generated by the user'sgesture is associated with one of the completion candidates in theinteractive search list 30, then the associated completion candidate isselected from the interactive search list 30. Preferably, when acompletion candidate is selected from the interactive search list 30,the particular selection is indicated to the user by the data entrysystem 26 by highlighting the selected completion candidate in theinteractive search list 30.

In the first embodiment, the data entry system 26 is programmed torequire that the user gesture with the pointing device towards or onto acompletion candidate in the interactive search list 30 in order toselect that completion candidate. The gesture need only be a minimumdistance. In an alternative arrangement, however, when a user makesselections from the interactive search list 30 using gestures with thepointing device, the movement performed by the user is relative. Withthis “relative” mode of gesture-based candidate selection, the user needonly gesture in a direction associated by the data entry system 26 witha desired completion candidate without the pointing device necessarilymoving towards or onto the portion of the graphical user interface 34where the completion candidate is displayed. In this case, thepredetermined vectors associated by the data entry system 26 withentries in the interactive search list 30 correspond to unique gestureswith the pointing device but not necessarily gestures which are towardsor onto a particular entry in the interactive search list 30. With thisrelative mode of selection, gestures with the pointing device are usedto select amongst the completion candidates on the interactive searchlist 30 even if the user is not gesturing with the pointing devicetowards or onto a particular completion candidate within the interactivesearch list 30. In this case, the user need not move the pointing devicetoward or onto a particular fixed location within the interactive searchlist 30 in order to select a specific completion candidate. Associatinga gesture with a particular completion candidate in the interactivesearch list 30 in the above manner minimizes the amount of movementrequired with the pointing device to make selections from theinteractive search list 30 and provides the user with the flexibility ofselecting completion candidates with gestures which do not necessarilyneed to be towards or onto the desired completion candidate.

Once the user has selected a completion candidate from the interactivesearch list 30, several options are available to the user. If thecompletion candidate represents the entry that the user wishes to add tothe text, then the user can accept the selected completion candidate forinsertion into the text by lifting the pointing device up from thetouch-sensitive screen 14 in less than a predetermined time limit L2while keeping the particular completion candidate selected. This latterevent generates a user input signal which instructs the data entrysystem 26 to terminate all searching based on the partial text entry andto signal to the application 27 to use the selected completion candidateto permanently replace the partial text entry. When the selectedcompletion candidate is used to permanently replace the partial textentry at this point, the interactive search list 30 is cleared from thegraphical user interface 34 and the image of the digital keyboard 28 isre-enabled ready to receive the next keystroke from the pointing device.With the partial text entry thus completed, the data entry system 26begins monitoring anew for text entries by the user.

If the user wishes to change selections, the user can move through thelist of completion candidates displayed in the interactive search list30 by gesturing with the pointing device to other completion candidatesin the interactive search list 30. If the user is unsure of whichcompletion candidate to use, or wishes to pause to consider whether tocontinue in search mode or to return to keyboard mode, the user cangesture to or pause in a “dead zone” within the graphical user interface34 for any length of time without triggering any further action by thedata entry system 26. In the first embodiment, when the interactivesearch list 30 is first activated by pausing on a key on the digitalkeyboard 28, the data entry system 26 begins monitoring the length ofthe vector that the user thereafter generates to determine when and ifthe user is selecting a particular completion candidate from theinteractive search list 30 or when the user is carrying out anotherrecognized operation such as moving the pointing device to a dead zone.If the data entry system 26 determines that the length of the vectorgenerated from the current position coordinates and the point of originis less than or equal to a predetermined length, then the pointingdevice is deemed by the data entry system 26 to be in a dead zone on thegraphical user interface 34. When the pointing device is in a dead zone,the user has the freedom to pause without activating any furtheroperation by the data entry system 26 and without clearing theinteractive search list 30. This provides the user with the option topause and consider what their next operation will be. Other dead zonesmay be programmed into the graphical user interface 34 within the dataentry system 26 for the user to move to with the pointing device so asto further enhance the user's ability to pause in different parts of thegraphical user interface 34. If the vector being generated through agesture is found by the data entry system 26 to exceed a predeterminedlength, the data entry system 26 checks to determine whether or not theparticular vector being generated is associated with any of thecompletion candidates in the interactive search list 30 or with anyother operation on the screen such as alternative or additional deadzones.

If the completion candidate selected on the interactive search list 30represents only part of the entry that the user wishes to add to thetext, then the user can use the selected completion candidate todynamically initiate a further search for a more refined list ofcompletion candidates from the dictionary 20. The ability to dynamicallysearch for a more refined list of completion candidates based on aselected completion candidate is also referred to in this specificationas an iterative search. This iterative search tool is provided throughthe interactive search list 30 when the interactive search list 30 isactive and displays a list of potential completion candidates for theuser to select from. An iterative search is triggered in the firstembodiment by the user continuing to keep a completion candidate in theinteractive search list 30 selected for more than the predetermined timelimit L2. The automated ability to use the interactive search list 30 tofurther search the dictionary 20 allows the user to make good use ofsearch results that are only partially successful. When the usercontinues to keep a completion candidate selected in the interactivesearch list 30 for more than the predetermined time limit L2, the dataentry system 26 determines that the user input corresponds to a userselection to initiate a new search using the selected completioncandidate as the basis for the new search. When this happens, thecandidate prediction system 32 dynamically obtains a refined list ofcompletion candidates based on the selected completion candidate. Asillustrated in FIG. 5A, the refined list of completion candidatesprovides a narrower list of completion candidates based on a morespecific search string (i.e. the selected completion candidate).Iterative searching enables one to perform multi-level searches with theinteractive search list 30, so that the user can quickly use acompletion candidate from one level of search results to drill deeperinto the dictionary 30 for a narrower set of completion candidates.

In the first embodiment, iterative searching can be initiated when acompletion candidate in the interactive search list 30 represents only afirst part (i.e. a leading part) of the entry that the user wishes toadd to the text.

Once the candidate prediction system 32 has obtained the refined list ofcompletion candidates, the interactive search list 30 is redisplayedwith the refined list of completion candidates. When the interactivesearch list 30 is redisplayed, the point of origin coordinates, used bythe data entry system 26 to track vectors generated from gestures withthe pointing device, are set to the position coordinates of the pointingdevice at the time the selected completion candidate is used to initiatethe iterative search. With the interactive search list 30 redisplayed,the user can then choose one of the completion candidates in the refinedlist by lifting the pointing device up after selecting the particularcompletion candidate through a gesture, or the user can further repeatthe iterative search process by selecting one of the completioncandidates in the refined list and pausing with that particularcompletion candidate selected for the predetermined time limit L2. Withthe refined list of completion candidates displayed, the user may alsolift the pointing device without selecting any completion candidatesobtained from the iterative search. This latter action leaves the searchstring set to the last completion candidate selected by the user in theprevious iteration of the interactive search list 30 and returns thedata entry system 26 to keyboard mode. At this point, the interactivesearch list 30 is cleared from the graphical user interface 34, thedigital keyboard 28 is redisplayed, and the data entry system 26 sendsthe completion candidate last selected by the user from the interactivesearch list 30 to the application 27 for entry into the text, therebyreplacing the contents of the partial text entry currently underdevelopment by the user. New characters can then be added. As avariation, using the digital keyboard 28, the user can then, if desired,instruct the application 27 to cancel the entry of the modified partialtext entry into the text by selecting a function button displayed on orassociated with the digital keyboard 28.

EXAMPLE

FIGS. 6 and 6A show an example 100 from the user's perspective of theoperation and flexibility of the data entry system 26 for the firstembodiment in FIG. 1 to 5. For the example shown in FIGS. 6 and 6A,suppose the user wishes to enter in the word “endlessly” and begins byentering at block 102 the letter “e” on the digital keyboard 28. Inorder to activate the interactive search list 30, the user pauses on theletter “e” for at least the predetermined time limit L1 whichautomatically triggers at block 104 the candidate prediction system 32to obtain a list of completion candidates that are then displayed to theuser in the interactive search list 30. Depending upon the contents ofthe dictionary 20 and the ranking system used to rank completioncandidates stored within the dictionary 20, the desired completioncandidate “endlessly” may not be one of the choices displayed in theinitial interactive search list 30. Suppose for the moment, however,that the word “end” is one of the completion candidates displayed in theinitial interactive search list 30. The user can select by gesture atblock 108 the completion candidate “end” and use it to automaticallyinitiate a further search of the dictionary 20 in order to retrieve alist of prioritized completion candidates which all begin with theprefix “end”. As discussed, this iterative searching technique isperformed with the pointing device by simply pausing while selecting acompletion candidate (in this case the word “end”) in the interactivesearch list 30 for the predetermined time limit L2 at block 116 whichthereby automatically initiates a new search using the selectedcompletion candidate as the basis for such a search. If the desiredcompletion candidate “endlessly” appears in the updated interactivesearch list 30, the user can then immediately add the desired completionword by selecting it (block 120) from the interactive search list 30 andlifting the pointing device up in less than the predetermined time limitL2.

If the interactive search list 30 displayed after block 104 does notinclude the prefix “end” or any other prefix that would lead the user torapidly enter the desired word “endlessly” using the data entry system26, then the user has the option of lifting the pointing device up fromthe touch-sensitive screen 14 at block 106 without selecting any of thecompletion candidates. This type of user input notifies the data entrysystem 26 to clear the interactive search list 30 from the screen and tore-enable and display the digital keyboard 28. It should be noted thatin this latter operation the search string continues to contain thepartial text entry which the user has generated with the digitalkeyboard 28 (in this case the search string contains only the letter“e”).

As a further illustration of the flexibility of the present data entrysystem 26, if the partial completion candidate “end” is used to initiatea further search and the new list of completion candidates does notinclude the word “endlessly” in the list of completion candidates, thenthe user can choose to continue building upon the partial completioncandidate “end” by lifting the pointing device up from thetouch-sensitive screen 14 without any of the completion candidates inthe new list selected and proceeding to continue entering in charactersfrom the digital keyboard 28. In this example the partial completioncandidate “end” permanently replaces the partial text entry that theuser was generating with the digital keyboard 28 in the user'selectronic text, the search string is cleared and any new user input isautomatically treated as being part of a new partial text entry.

It will be appreciated from the above particular that the user canfollow the final steps to completing a partial completion candidate byentering in the remaining letters at the end of the partial completioncandidate. For instance, if the partial completion candidate “endless”was retrieved, then the user can simply tap on the digital keyboard 28the letters “l” and “y” followed by a space (or the end-of-entryfunction button) in order to notify the data entry system 26 of thecompletion of the current text entry. Thus, even when a complete word,phrase, or sequence of characters is not found in the dictionary 20, theuse of the data entry system 26 to retrieve a partial completioncandidate can result in less time and effort being expended than if theuser had simply typed in each letter of the desired word, phrase, orsequence of characters.

In an alternative embodiment, the data entry system 26 is programmedwith the ability to re-initiate automated searching even once theapplication 27 is instructed by the data entry system 26 to permanentlyreplace the partial text entry in the text with a partial completioncandidate. In this alternative, the search string is set to the partialcompletion candidate when the partial completion candidate replaces thepartial text entry in the user's electronic text. The user may thenreturn at any time to the automated search facility of the data entrysystem 26 by pausing on a key on the digital keyboard 28 for thepredetermined time limit L1. For instance, if the partial completion aselection “end” has already been used to initiate a further search andthe user then lifts up the pointing device without selecting any of thecompletion candidates in the new list of completion candidates, the usercan then return to automated searching with the data entry system 26 by,for example, touching on the letter “l” on the digital keyboard 28 for asufficient period of time to initiate a search on the basis of theprefix “endl”. The partial text entry “endl” will then be used by thecandidate prediction system 32 to obtain a list of completion candidatesthat are then displayed in the interactive search list 30. If thedesired completion candidate “endlessly” appears in the new list ofcompletion candidates, the user may then choose that candidate and addit to the text by selecting that candidate and lifting the pointingdevice before the time limit L2 is reached. If the desired completioncandidate does not appear in the interactive search list 30, the usercan simply lift the pointing device without selecting any of thecompletion candidates and continue building upon the partial text entry“endl” by entering further characters via the digital keyboard 28. Oncethe desired word is complete, in order to clear the search string andinstruct the data entry system 26 to treat any new user input as beingpart of a new partial text entry in this alternative, the user selects akey or function from the digital keyboard 28 programmed to indicate thatentry of the original partial text entry has ended, as discussed furtherin the section below.

Forcing the End of a Partial Text Entry

As can be seen from the previous example, there will be times when theuser is entering a word, phrase, or character sequence that does notappear in the dictionary 20. In this case, if the user has activated theinteractive search list 30, it will be empty once the user has enteredenough characters for the candidate prediction system 32 to determinethat the dictionary 20 does not have any words, phrase or charactersequences which could be completion candidates for the partial textentry that is currently being entered by the user. When this is thecase, or when the user is completing the entry of a word, phrase, orcharacter sequence by entering on the digital keyboard 28, the dataentry system 26 needs to know when the current partial text entry beinggenerated by the user has been completed and when another partial textentry has begun. If the user has selected and accepted a completioncandidate from the interactive search list 30 in the first embodiment,then the data entry system 26 is programmed to recognize that the userhas completed the current partial text entry and automaticallyinitializes so that the next character selected from the digitalkeyboard 28 will be treated as a leading character for a new partialtext entry. However, if the user is completing a partial text entry thatis not found in the dictionary 20 and completes the partial text entryby simply entering characters from the digital keyboard 28, then thedata entry system 26 may not know when the current partial text entry iscompleted and when the next partial text entry has begun. In order toassist in the identification of when a user has completed an entry for aword, phrase, or sequence of characters, the data entry system 26 can beprogrammed to monitor for an “end-of-search” signal from the user viathe digital keyboard 28. In the first embodiment, an end-of-searchsignal is received by the data entry system 26 when a key or functionbutton programmed to indicate an express “end-of-search” instruction isselected from the digital keyboard 28. Alternatively, the data entrysystem 26 can be programmed to recognize an implicit end-of-searchinstruction such as, for example, when the space key on the digitalkeyboard 28 is selected. Other non-alphabetic characters may also beused to provide an implicit end-of-search instruction.

System Flow

In the discussion that follows, the processing performed by the dataentry system 26 running on the processing unit 12 is described infurther detail. For this discussion, reference is made to FIG. 7 to 9which are logical flow diagrams illustrating the flow of operation ofthe data entry system 26. The description of the computer-implementedprocess illustrated in FIG. 7 to 9 will be made with reference to thepersonal computing device 10 and the data entry system 26 shown in FIG.1 to 5.

The data entry system 26 is initialized at block 202. This includes theinitialization of variables and flags used within the data entry system26 to track the state of user input, processing, and output. This alsoinvolves initializing the user interface for the data entry system 26including loading and setting up the digital keyboard 28 for display,selecting the dictionary 20 to be used by the data entry system 26,identifying the type of pointing device that will be used for textentry, and setting up any user-defined configurations for the displayand use of the digital keyboard 28, and the interactive search list 30.Once the data entry system 26 including the digital keyboard 28 isinitialized, the user interface for the data entry system 26 is thendisplayed on the touch-sensitive screen 14 at block 204. In its mostbasic form, the user interface initially displayed comprises the digitalkeyboard 28. The user interface may also include one or more toolbars ordisplay boxes for the display of the current value of the search stringand the current contents of the interactive search list 30. With theinterface initialized and displayed on the touch-sensitive screen 14,the data entry system 26 awaits for user input from the pointing deviceat block 206. Once user input is received at block 206, the data entrysystem 26 determines at block 208 whether the user input received by thedata entry system 26 at block 206 corresponds to any of the charactersdisplayed on the digital keyboard 28. If the user input is found atblock 208 to correspond with a character displayed in the digitalkeyboard 28, then that character is added to the search string at block210. As indicated earlier, the search string is used by the candidateprediction system 32 to search the dictionary 20 for potentialcompletion candidates. In the first embodiment, the candidate predictionsystem 32 continuously retrieves a list of completion candidates fromthe dictionary 20 as contents of the search string change. As the usermodifies the current partial text entry under construction, the contentsof the search string are modified and used by the candidate predictionsystem 32 at block 212 to obtain a new list of completion candidatesfrom the dictionary 20.

The operation of the candidate prediction system 32 for the firstembodiment is further illustrated in FIG. 9. As illustrated in FIG. 9for the first embodiment, the candidate prediction system 32 retrievesthe first and last entry from the dictionary 20 that begin with thecontents of the search string. The first and last entry retrieved arethen used to define a search span. If the search span is greater thanthe number of completion candidates that the data entry system 26 isprogrammed to display, then the completion candidates within the searchspan having the highest corresponding weight values (for example,frequency values) are retrieved up to the maximum number of permissiblecompletion candidates which may be displayed in the interactive searchlist 30. The completion candidates retrieved by the candidate predictionsystem 32 in this manner are then compiled into a list of completioncandidates which is used for display in the interactive search list 30.In the case of the first embodiment, this involves very littleprocessing as the list of completion candidates is updated whenever thepartial text entry currently under development by the user is modified.As indicated earlier, however, in an alternative embodiment, theinteractive search list 30 containing a list of completion candidatesmay be generated once the user invokes activation of the interactivesearch list 30 by pausing on a key on the digital keyboard 28 (i.e.following block 214).

Once a character has been added to the search string at block 210, thedata entry system 26 determines at block 214 whether or not the pointingdevice has been released from the touch-sensitive screen 14 within thepredetermined time limit L1. If the data entry system 26 finds that thepointing device has been released within the time limit L1, processingreturns to block 206 where the data entry system 26 waits for furtheruser input. This allows the user to use the digital keyboard 28 to typeout a portion or all of a desired text entry by briefly tapping on keyson the digital keyboard 28 one keystroke at a time. On the other hand,if the data entry system 26 determines at block 214 that the pointingdevice has not been released within the time limit L1, the data entrysystem 26 determines at block 216 whether or not the list of completioncandidates (also referred to and shown in the drawings as a candidatelist) is empty. If the candidate list is found to be empty at block 216,then the candidate prediction system 32 has not found any completioncandidates in the dictionary 20 which would potentially complete thepartial text entry under development by the user. In this case,processing returns to block 206. From the user's perspective, with nopossible candidates having been retrieved from the dictionary 20, theuser can complete the desired text entry by continuing to type in theremaining characters from the digital keyboard 28 or may otherwisemodify the partial text entry under development using other functionkeys available on the user interface (such as canceling the currentpartial text entry or backspacing one or more characters in the partialtext entry). If, on the other hand, the list of completion candidates isfound not to be empty at block 216, then the digital keyboard 28 isdisabled at block 218 and the interactive search list 30 containing thecandidate list obtained in block 212 is displayed within the interactivesearch list 30 on the touch-sensitive screen 14 at block 222 and thedata entry system 26 waits for further user input at block 224.

It will be recalled that once the user has activated the display of theinteractive search list 30 containing a list of completion candidates,the user can use the data entry system 26 to take one of severalactions. The user can deactivate the interactive search list 30 andreturn to modifying or editing the current partial text entry by liftingthe pointing device from the touch-sensitive screen 14 without anysignificant movement. If this action is detected at block 226 then thecandidate list is cleared and the search string contents are preservedat block 262. Processing then returns to block 204 where the user cancontinue modifying the current partial text entry using the digitalkeyboard 28.

If, on the other hand, the user input received at block 224 isidentified at block 226 as being a gesture, then the gesture is analyzedat block 228 to determine if it is associated with a completioncandidate displayed in the interactive search list 30. If the gesture isfound to be associated with a completion candidate in the interactivesearch list 30, then that completion candidate is selected from theinteractive search list 30 at block 230. Preferably, when a completioncandidate is selected in the interactive search list 30 at block 230,the selected completion candidate is highlighted or otherwise emphasizedin some way to the user.

When a completion candidate is selected at block 230, a timer T2 isstarted. The timer T2 is used in the first embodiment to monitor howlong the selected completion candidate remains selected by the user. Aswill be recalled, the user can select one of the completion candidatesin the interactive search list 30 and use the selected completioncandidate to either replace the partial text entry that the user iscurrently entering or use the selected completion candidate to initiatea further automated search to obtain a more refined list of completioncandidates from the dictionary 20. In the first embodiment, the timer T2is used to distinguish between these latter two types of operationswhich the user may initiate with the pointing device using the selectedcompletion candidate. It should be noted that if the gesture analyzed atblock 228 is not found to be associated with the completion candidate,then processing returns to block 224 where the data entry system 26awaits further user input from the pointing device for analysis at block226.

Once a completion candidate has been selected from the interactivesearch list 30 at block 230, the data entry system 26 monitors the timerT2 at block 232 and monitors for further user input. If the data entrysystem 26 detects further user input from the pointing device at block236, the timer T2 has not exceeded the predetermined time limit L2 andthe user input is analyzed at block 238 to determine whether the userhas initiated a gesture or lift with the pointing device. If a lift isdetected at block 238, then this event serves as an indication to thedata entry system 26 that the selected candidate in the interactivesearch list 30 has been accepted by the user, in which case thecompletion candidate is added to the text in place of the potential textentry and the search string is cleared at block 240. Once a selectedcompletion candidate has been added to the text at block 240, the dataentry system 26 returns to block 204 where the initialized userinterface is displayed on the touch-sensitive screen 14, and the dataentry system 26 awaits for further user input at block 206. Any newcharacters received by the data entry system 26 are then treated asbeing part of a new partial text entry.

If, on the other hand, a gesture is detected at block 238, then thegesture is analyzed to determine if it is associated with a differentcompletion candidate in the interactive search list 30 at block 242, andif the answer to the analysis of block 242 is “YES”, then the data entrysystem 26 changes the completion candidate selection from theinteractive search list 30 and restarts the timer T2 at block 244. Thedata entry system 26 then continues to monitor the timer T2 at block 232and user input at block 234. From the user's perspective, a differentcompletion candidate from the list of completion candidates ishighlighted. If a gesture is detected at block 238, but that gesture isnot found to be associated with a different candidate at block 242, thenthe data entry system 26 determines at block 246 whether the gesture isassociated with a dead zone on the user interface. As discussed, deadzones are used to allow the user to deselect a selected completioncandidate and to pause to consider what further action the user may wishto take. Dead zones are particularly useful when a timer such as timerT2 is used as the triggering mechanism to determine when a selectedcompletion candidate is to be used to initiate a further automatedsearch of the dictionary 20. If a gesture is found to be associated witha dead zone at block 246, the currently selected completion candidatefrom the interactive search list 30 is deselected at block 248, thetimer T2 is disabled, and the data entry system 26 awaits for furtheruser input at block 256. Otherwise, processing returns to block 232.

If the timer T2 is found at any time at block 232 to have exceeded thepredetermined time limit L2, then this event serves as an indication tothe data entry system 26 that the selected candidate is to be used toinitiate a further automated search, in which case processing proceedsto block 250 where the search string is set to equal the selectedcompletion candidate and a new list of completion candidates is obtainedfrom the dictionary 20 at block 252. This new list of completioncandidates is then displayed in the interactive search list 30 at block254, and the data entry system 26 then awaits further user input atblock 256. User input received at block 256 is analyzed at block 258 andif at block 258 the data entry system 26 determines that the user inputcorresponds to a gesture with the pointing device, the gesture isanalyzed at block 260 to determine if the gesture generated by thepointing device is associated with any of the completion candidates fromthe new list of completion candidates displayed in the interactivesearch list 30. If the gesture is not associated with a completioncandidate, then the data entry returns to block 256 and awaits forfurther user input from the pointing device. If, on the other hand, thegesture is associated with a completion candidate in the interactivesearch list 30, then the data entry system 26 returns to block 230 wherethe associated completion candidate is selected, the timer T2 isrestarted, and the data entry system 26 then monitors to see, as before,whether or not the user will use the selected completion candidate toeither replace the partial text entry or initiate a further automatedsearch. It should be noted that when the new list of completioncandidates is displayed in the interactive search list 30 at block 254,and the data entry system 26 awaits for user input at block 256, thatthe pointing device remains in contact with the touch-sensitive screen14. This situation is similar to the one at blocks 222 and 224 exceptthat the interactive search list 30 has been updated to contain a newlist of completion candidates for the user to select from.

Data Entry System Features

The data entry system 26 may include a variety of features and aspectsto further enhance functionality and flexibility of text entry for theuser when a single pointing device is used. Furthermore, each of thefollowing features and aspects individually provides a beneficialenhancement and is an embodiment of the present invention. Theseadditional features and aspects of the present invention will now bedescribed below. Many of the features and aspects described below canalso be applied in combination with various types of search listscontaining completion candidates, including single and multi-levelsearch lists.

As before, the following features and aspects can be applied to manytypes of personal computing devices and may be stored ascomputer-readable instructions in one or more types of computer-readablemedia.

Notification of Active Entry Mode

In one alternative embodiment, the data entry system 26 is programmed tonotify the user of the active entry mode. In this variation, the dataentry system 26 is programmed to display on the graphical user interface34 an express indication of the currently active entry mode (asillustrated in blocks 218 and 240 of FIGS. 23 and 24). In thisvariation, two entry modes are tracked with the data entry system 26:(1) a keyboard mode to indicate that the digital keyboard 28 is active,and (2) a search mode to indicate that automated searching is activewith the interactive search list 30. Displaying on the graphical userinterface 34 an express indication of the current entry mode for thedata entry system 26 is achieved by displaying a different color signal(or set of signals) on the graphical user interface 34 depending onwhich entry mode is currently active. Alternatively, specific icons canbe assigned to each entry mode and displayed on the graphical userinterface 34 when the corresponding entry mode is active. Notifying theuser of the entry mode with one or more express indicators on thegraphical user interface 34 minimizes the risk of the user losing trackof whether the user is in keyboard mode or in search mode and enhancesthe ease of use of the data entry system 26. This can be particularlyuseful when both the digital keyboard 28 and the interactive search list30 are displayed simultaneously on the graphical user interface 34.

Notification of Completion Candidates

If the interactive search list 30 has fewer than the predeterminedmaximum number of displayable completion candidates, then this willserve as an indication to the user that the interactive search list 30currently displayed contains all of the completion candidates in thedictionary 20 that begin with the partial text entry that the user hasentered. If, however, the interactive search list 30 is full when it isactivated by the user, it will not be clear from looking at theinteractive search list 30 whether any other potential completioncandidates for the current partial text entry may reside in thedictionary 20. In order to remove this ambiguity and expressly indicateif there are any more potential completion candidates and if so, howmany, in another aspect the data entry system 26 is programmed todisplay on the graphical user interface 34 the number of potentialcompletion candidates in the dictionary 20 that have leading charactersmatching the current partial text entry. The number of potentialcompletion candidates is displayed and updated by the data entry system26 when the digital keyboard 28 is in use and whenever the interactivesearch list 30 is activated or updated with new completion candidates(as illustrated for example at blocks 213A and 254 of FIGS. 21 and 22).Alternatively, the data entry system 26 can be programmed to display onthe graphical user interface 34 a graphical indication of whether or notadditional completion candidates having leading characters matching thecurrent partial text entry are located in the dictionary 20, in additionto those candidates displayed in the interactive search list 30. Hereagain, the graphical indication is displayed and updated by the dataentry system 26 when the digital keyboard 28 is in use and whenever theinteractive search list 30 is activated or updated with new completioncandidates. This notification feature enhances the user's ability toknow, even before attempting to use the interactive search list 30, whenautomated searching may retrieve a list of possible completioncandidates (or a refined list). With this advanced notification feature,the user can better decide when to continue adding further characters tothe partial text entry with the digital keyboard 28 and when to activateand use the interactive search list 30.

Digital Keyboard Features

A variety of features may be implemented with the digital keyboard 28 inorder to further enhance the user's ability to enter text with the dataentry system 26. In one variation, the digital keyboard 28 can beprogrammed to be displayed in a frequency distributed layout. Thefrequency distributed layout takes advantage of the well known principlethat certain characters in a character set are more frequently used thanother characters within the same character set. For example, the digitalkeyboard may contain the letters of the English alphabet displayed in afrequency distributed layout based on an analysis of a large corpus oftext. It will be appreciated, of course, that the characters or symbolsin a particular character set may have different relative frequenciesdepending upon the sample population of data used to rank suchcharacters relative to each other within a particular character set. Itwill be appreciated that when the data entry system 26 is employed, thefrequency of characters entered may be different than that oftraditional systems that enter text one character at a time. Thesegeneral principles are used to generate a frequency distributed layoutfor the digital keyboard.

In one embodiment of the digital keyboard having a frequency distributedlayout, the digital keyboard is programmed to include a plurality ofcharacters assigned to predetermined locations within the layout for thedigital keyboard according to a predetermined frequency distributionassociated with the plurality of characters. The plurality of charactersdisplayed on the digital keyboard include less commonly used charactersand more commonly used characters based on the predetermined frequencydistribution. In this embodiment, the digital keyboard is displayed on agraphical user interface with the less commonly used charactersdisplayed substantially further from the center of the digital keyboardthan the more commonly used characters. An example of this type ofdigital keyboard is illustrated generally in FIG. 3 except that the“space” key has been located in the outer ring rather than closer to thecenter of the digital keyboard 28. An example of the digital keyboard 28having a frequency distributed layout with the space key near the centeris shown in FIG. 10.

With the frequency distributed layout, it is preferable that the imageof the digital keyboard 28, when substantially circular or elliptical,has a first group of most frequently used characters (i.e. the mostcommonly used characters) located substantially near to the center ofthe digital keyboard 28 with at least one group of less frequently usedcharacters (relative to the first group) displayed at a distance furtherfrom the center of the keyboard than the characters of the first group.As illustrated by FIG. 3, the digital keyboard 28 is preferablyconfigured to be displayed in a frequency distributed layout comprisinga plurality of characters arranged into rings. When the characters onthe digital keyboard 28 are arranged into rings, then the characters ina particular ring can be arranged to each be about the same distancefrom the center of the digital keyboard 28 providing some uniformity tothe movements required to enter text. This can also be useful forcertain arrangements including, for example, when the digital keyboard28 is programmed to be dynamically re-positionable as discussed furtherbelow.

In the keyboard layouts shown in FIGS. 3 and 10, at least one mostcommonly used character of a pre-selected character set or subset (suchas a subset or the ASCII character set) is located substantially in ornear the center of the digital keyboard 28. As also shown, the next mostcommonly used characters are located within an intermediate ring, andthe less commonly used characters of the character set are distributedin an outer ring of the digital keyboard 28. When the most commonly usedcharacters are located in or close to the center of the digital keyboard28, the degree of movement required with a pointing device to selectcharacters displayed within the intermediate or inner rings of thedigital keyboard 28 is minimized. In addition, arranging characters onthe digital keyboard 28 in concentric-like rings according to theirfrequency of use provides an easy and efficient mechanism for retrievingcharacters and entering data using a pointing device.

When rings are used with the digital keyboard 28, it will be appreciatedthat the arrangements of the characters within each ring is by no meanslimited to the layout shown in FIG. 3 or 10. For instance, thecharacters within a particular ring may be organized alphabetically in aclockwise (or counter clockwise) order. A challenge with many keyboarddesigns is that they take time to learn. The above ordered organizationincreases the opportunity to quickly learn and recall the location ofcharacters displayed on the digital keyboard 28, since user's arealready familiar with this clockwise distribution. In another variation,the characters in one half of a ring (for example, the upper half) maybe ordered alphabetically in one direction (for example, clockwise), andall characters in the other half of the same ring (for example, thelower half) may be ordered alphabetically in the other direction(counterclockwise). These type of organizations within the rings canalso enable a user to more quickly learn to locate a desired characterdisplayed in the digital keyboard 28.

Several other characteristics of the digital keyboard 28 may also vary.In general, the type of characters displayed and available, the type andnumber of characters displayed on particular keys of the digitalkeyboard 28, the font size of each character displayed, and the value tobe processed when a particular key is contacted (or selected) may allvary from keyboard to keyboard. As well, to minimize clutter the digitalkeyboard 28 can be displayed with no graphics outlining the keys on thedigital keyboard 28. For circular or ring-like keyboard layouts, severalother characteristics may also vary, including the number of ringsmaking up the keyboard layout, the number of keys displayed in eachring, and in the keyboard as a whole and the thickness or width of eachring.

In another variation, the digital keyboard 28 layout may be dynamicallyreplaced by the user with another keyboard layout. This feature can beparticularly advantageous when it is desirable to permit a user toquickly swap between several keyboard layouts (for example, as betweenthe keyboard layouts in FIGS. 10, 11 and 12), as in the case where thetouch-sensitive screen 14 is relatively small or the number ofcharacters required to enter data exceeds the space available to displaythe digital keyboard 28 within a location on the touch-sensitive screen14. Permitting the user to swap between multiple keyboard layoutsprovides the user with a significant degree of flexibility when enteringcharacters with the data entry system 26. In addition, when multiplekeyboard layouts are available, they can be organized according tovarious subclasses of characters. For instance, a default keyboardlayout may contain alphabetic characters. A second keyboard layout maycontain numeric characters. A third keyboard layout may contain specialcharacters. Grouping a character set into logical subgroups andorganizing these subgroups on multiple keyboard layouts provides theuser with the ability to logically navigate amongst different types ofkeyboard layouts when desired. Preferably, the user may activate aparticular keyboard layout using one or more hot keys each associatedwith at least one of the available keyboard layouts. A hot key may beany key or function associated with the digital keyboard 28 thattriggers the display of an alternative keyboard layout. When a hot keyassociated with a particular keyboard layout is selected by the userfrom the digital keyboard 28, the currently displayed keyboard layout isreplaced with the keyboard layout associated with the selected hot key.

In another variation, a number of different related symbols orcharacters may be accessed through one key on the digital keyboard 28.For example, when the user touches a punctuation key, a number ofdifferent punctuation marks may be displayed, and the user may selectone of these choices by gesturing to select the desired symbol orcharacter.

Dictionary Features

In another aspect of the present invention, multiple dictionaries may bestored in the computer-readable medium 16 (FIG. 1), with each dictionarycontaining completion candidates with associated weight values forranking completion candidates relative to each other. For example, theweight values may represent frequency of use values weighted accordingto usage in a particular language or a particular field of use (e.g.engineering, general business, law, accounting) or a particular user'suse. With multiple dictionaries, a user may readily switch betweenlanguage sets or language subsets or dictionaries for a particularapplication.

In one variation, the data entry system 26 (for example, in FIG. 1 to 5)can contain multiple simultaneously accessible dictionaries that theuser can enable and disable individually. For instance, the data entrysystem 26 can have a first dictionary containing completion candidatesbased on Oxford English and a second dictionary containing completioncandidates based on American English, both active at the same time andboth accessed and used by the candidate prediction system 32 when a listof completion candidates is to be obtained. As another example, the dataentry system 26 can have a legal dictionary, a civil engineeringdictionary, and a regular American English dictionary all activesimultaneously. This feature enables the user to obtain a list ofcompletion candidates simultaneously containing variations on particularwords, phrases, or character sequences particular to specific areas ofpractice or particular to specific types of dictionaries.

With multiple, simultaneously accessible dictionaries, the candidateprediction system 32 can be programmed to retrieve completion candidatesfrom two or more dictionaries, each having their own weighting functionfor completion candidates (as illustrated in blocks 212 and 252 of FIGS.25 and 26). When this is done, the candidate prediction system 32 cangenerate a final list of completion candidates based on a combiningfunction that takes into account the weight values associated with thecompletion candidates retrieved from the multiple dictionaries and whichalso prioritizes the completion candidates based on the sourcedictionary from which a particular completion candidate is retrieved. Byway of example, the candidate prediction system 32 may be programmed toinclude in the final list the top N completion candidates (where N≧1)from each list of completion candidates retrieved from the multipledictionaries.

A predefined dictionary may also be modified or generated based on aparticular user's usage of particular words or character sequences overthe course of using the data entry system 26. Such a “personalized”dictionary may also be used to produce lists of the most commoncompletion candidates used by a user. For example, the actual usage ofcompletion candidates from the dictionary may be tracked by the dataentry system 26. A personalized dictionary may also be used incombination with other dictionaries. For example, using a standardizeddictionary and a personalize dictionary the candidate prediction system32 may be programmed to give priority first to completion candidates (upto a predetermined limit) beginning with the contents of the searchstring and recorded in the personalized dictionary as having the highestweight values, and then, if space remains in the interactive search list30, to completion candidates having the highest weight values in thestandardized dictionary and beginning with the contents of the searchstring. As another example, a new dictionary may be generated based onthe completion candidates selected by the user through the use of thedata entry system 26 over time. The user may activate the new dictionaryat any time so that it takes priority over any pre-existingdictionary(ies) if completion candidates beginning with the searchstring are located in the new dictionary.

In another variation of the dictionary 20 and the use of the dictionary20 via the data entry system 26 of the present invention, the data entrysystem 26 may be programmed to monitor a specific user's pattern ofusage of completion candidates from the interactive search list 30 overtime. For example, as completion candidates are selected by the user andentered into the text using the data entry system 26, an additionalweight field in each entry of the dictionary 20 may be used by the dataentry system 26 to track the user's actual frequency of completioncandidate usage. In this user-oriented variation the candidateprediction system 32 may be configured to find the most commoncompletion candidates in the dictionary 20 beginning with a searchstring based firstly on the degree of actual user usage tracked in theadditional usage fields of the dictionary 20 associated with completioncandidates therein, and secondly based on the predefined weight fields24 if the additional usage fields are null or are less than apredetermined threshold value defining a minimum percentage level ofusage for evaluation, or if the list of completion candidates retrievedusing the additional usage fields results in a number of completioncandidates less than the maximum number which may be displayed with theinteractive search list 30. In such a user-oriented variation, thecandidate prediction system 32 tracks the total number of selectionsmade from the dictionary 20 (for example, in a TOTAL_USAGE field in thecandidate prediction system 32) over time by the user, as well as thetotal number of occasions on which a particular completion candidate inthe dictionary 20 is actually used by the user to replace a partial textentry (for example, in a COMPLETION_CANDIDATE_USAGE field in thecandidate prediction system 32). To determine whether or not anadditional usage field for a particular completion candidate in thedictionary is less than the predetermined threshold value for acceptableusage and evaluation, the data entry system 26 compares the valueCOMPLETION_CANDIDATE_USAGEITOTAL_USAGE with the predetermined thresholdvalue. In such a variation the end-most commonly used completioncandidates retrieved for display may be configured based primarily onthe user's actual completion candidate usage as opposed to a predefinedfrequency distribution preprogrammed into fields 24 of the dictionary20.

It will be further appreciated from reading this specification thatincluding common word prefixes in lists of completion candidates canreduce user effort in arriving at the desired final completioncandidate. The inclusion of prefixes provides for one common entry pathto all words that begin with that prefix. Compared to using an initialcandidate list which, for example, simply lists all words beginning withcertain characters this alternative method may in turn shorten thenumber of searches, or search iterations, required to find the finalcompletion candidate. This results because the weight field for theprefix completion candidate can be made the sum of the weight fields forall entries that begin with the prefix which in turn means the prefix ismore likely to show up at an earlier stage of an iterative searchsequence.

An example of this is if the desired final candidate is the word‘telescope’. Without the use of prefixes the user might enter ‘t’ butfind no words beginning with ‘tele’ in the completion candidate list.This would then require the user to enter the next letter ‘e’ howevertelescope may still not have a high enough weight to show up in the nextlist of completion candidates and so the process would continue. The useof prefixes as completion candidates can shorten this process since thecombined weight of all completion candidates beginning with ‘tele’ wouldcause this prefix to show up early in the search process, possibly assoon as ‘t’ is entered, which would then allow the user to immediatelynarrow the search to only those words beginning with the characters‘tele’. Because the desired candidate is found after fewer searches orsearch iterations it reduces the memory load on the user which in turncan ease learning of the necessary sequence of operations the user mustperform to enter words that begin with those prefixes.”

Re-Positionable Keyboard

In another aspect of the present invention, the digital keyboard 28 isprogrammed to be dynamically re-positionable so as to follow thepointing device. When the digital keyboard 28 is programmed to bedynamically re-positionable, its image follows the movement of thepointing device on the touch-sensitive screen 14 so that the keyboardimage remains generally centered beneath the pointing device after eachkeyboard selection. In this aspect, whenever the data entry system 26 isin keyboard mode, the digital keyboard 28 is programmed to automaticallyre-center itself on a location within the graphical user interface 34associated with a last known set of position coordinates for thepointing device. For example, if the character “u” is selected with thepointing device from the digital keyboard 28 in FIG. 3, the digitalkeyboard 28 re-centers itself substantially over the positioncoordinates which were used by the pointing device to select thecharacter “u”. By substantially re-centering the digital keyboard 28over the last known set of position coordinates for the pointing device,the position and distance of the keys on the digital keyboard 28relative to the user's pointing device remains substantially constant.This provides a uniform mechanism for consistently selecting the samekey on the digital keyboard 28 using substantially the same movementwith the pointing device. In addition, when the digital keyboard 28 isdynamically re-positionable the degree and frequency with which the useris required to reposition the pointing device after selecting keyboardcharacters is minimized. If this re-positionable feature is combinedwith a frequency distributed keyboard having the most common charactersnear the center, the pointing device will generally always rest in thecenter of the most common characters. If the frequency distributedkeyboard is made up of rings, then each of the characters in aparticular ring will be equidistant from the pointing device when thepointing device is resting in the center of the keyboard, resulting in auniformity of movement for character entry.

When the digital keyboard 28 is programmed to be dynamicallyre-positionable, it may also be programmed to reposition to asubstantially central location within the graphical user interface 34(or to another user-definable position) when the digital keyboard 28approaches within a predetermined distance of any of the boundaries ofthe graphical user interface 34. Repositioning the digital keyboard 28in this way provides a mechanism to adjust for circumstances where thedigital keyboard 28 drifts too close to a boundary of thetouch-sensitive screen 14. In an alternative repositioning mechanism, ahot key may be used to automatically re-center the digital keyboard 28.In yet another alternative, the dynamically re-positionable digitalkeyboard 28 may be programmed to re-center about position coordinatesfor the pointing device when the position coordinates correspond to apart of the graphical user interface 34 (or screen) that is notcurrently occupied by the digital keyboard 28. For example, if thedigital keyboard 28 approaches an edge of the graphical user interface34 the user can simply touch down in a center of the graphical userinterface 34 and the digitial keyboard 28 will relocate to that point.

When the digital keyboard 28 is dynamically re-positionable, it ispreferable in general that the amount of keyboard movement, or drift, isminimized. This can be achieved by arranging the keyboard layout so thatthe keyboard characters are distributed about the digital keyboard 28 ina configuration that reduces the amount of drifting experienced when itis dynamically re-positionable. One way of achieving this is byconfiguring the digital keyboard 28 so that the total of the frequencyof use values for characters located within a particular portion (orsector) of the digital keyboard 28 is substantially the same as othersimilarly shaped portions (sectors) of the digital keyboard 28. It willbe recalled that for the frequency distributed arrangement of keyboardcharacters discussed earlier, each keyboard character has apredetermined frequency of use value assigned to (or associated with)it. In order to minimize drifting, the digital keyboard 28 may bedivided into notional, substantially equally shaped sectors, and thekeyboard characters may be assigned to locations within the digitalkeyboard 28 such that the total of combined frequency values forcharacters within a particular sector of the digital keyboard 28 issubstantially equal to the total of combined frequency values forcharacters within any of the other sectors of the digital keyboard 28.In this way, the likelihood of selecting a character from any one of thepredetermined sectors of the digital keyboard 28 is substantially thesame. Thus, if one wishes to minimize drift in the case of thecircular-type digital keyboard 28 layout in FIG. 3, it is preferablethat the keyboard characters are distributed such that when the digitalkeyboard 28 is notionally divided into substantially equally shapedwedge-like sectors, each sector of the keyboard has substantially thesame total ‘weight’ of characters, according to their frequency of use,as each of the other sectors.

Another way to minimize drift is to configure the digital keyboard 28 ina substantially symmetric layout of characters with pairs of opposingcharacters displayed on the digital keyboard 28 having substantiallysimilar frequencies of use. With this configuration, the frequency ofuse of one character in a pair of opposing characters is as close aspossible to that of the other character in the pair. An example of thisconfiguration is shown in FIG. 13 which shows the frequencies (f(X₁) andf(X₂)) of characters X₁ and X₂ being substantially the same as eachother, and the frequencies (f(X₃) and f(X₄)) of characters X₃ and X₄being substantially the same as each other. The frequencies of use ofthe characters displayed in the digital keyboard 28 may be calculatedusing well-known techniques of analysis on a large corpus of text.

The dynamically re-positionable digital keyboard 28 minimizes the needfor repositioning the pointing device and instead operates on the basisof repositioning the digital keyboard 28 relative to the pointingdevice. Making the digital keyboard 28 dynamically re-positionable alsoprovides uniform movement for a particular character resulting in a moreintuitive keyboard and a more intuitive data entry mechanism. Whencombined in a single embodiment, the character frequency distributionand the dynamically re-positionable aspects of the digital keyboard 28further reduce the movement required for the pointing device whencharacters are to be selected from the digital keyboard 28.

Candidate Selection

In the first embodiment described earlier above, completion candidatesare selected from the interactive search list 30 by way of gestures.Alternatively, other forms of candidate selection may be performed withpointing devices. For instance, if gesture-based selection is notdesired for a particular implementation, candidates may be selectedbased on their location in the interactive search list 30. As anotherexample, when the data entry system 26 is programmed to receive inputfrom a mouse having two or more buttons, the data entry system 26 can beprogrammed to use input from one mouse button to toggle betweenactivating and deactivating the interactive search list 30, and to useinput from a second mouse button to insert a completion candidate fromthe interactive search list 30 into the text when the interactive searchlist 30 is active and the mouse has been used to highlight thatcompletion candidate. In this latter case, the data entry system 26 mayalso be programmed to use input from the second mouse button as atrigger to select a key from the digital keyboard 28 if the mouse'scursor position (i.e. the mouse's position coordinates) on the graphicaluser interface 34 is associated with a key on the digital keyboard 28 atthe time input from the second mouse button is received.

In another aspect, candidate selection using the interactive search list30 may be modified to replace the time delay-based technique fortriggering the activation of the interactive search list 30 or fortriggering iterative searching, with other forms of input indicatorsfrom the pointing device. For instance, with a mouse, an input signalfrom a mouse button when the mouse position is located over a particularfunction button or location on graphical user interface 34 or when adouble click signal from that mouse button is received by the data entrysystem 26.

Interactive Search List Layout

Although the interactive search list 30 is displayed in the firstembodiment (FIG. 1 to 5) as a vertical list of completion candidates,the interactive search list 30 can be displayed in several differentways depending upon which options the data entry system 26 has beenprogrammed with and which of those options have been selected by theuser. There are four main considerations for the display of theinteractive search list 30. The first is where the interactive searchlist 30 is to be positioned within the graphical user interface 34. Thesecond is whether the interactive search list 30 is continuously visibleor not. The third consideration is the type of interactive search list,more specifically, how the completion candidates in the interactivesearch list 30 are arranged visually within the graphical user interface34. The fourth consideration is whether the interactive search list 30replaces the digital keyboard 30 or whether the interactive search list30, when active, temporarily appears remote from or superimposed over aportion of the digital keyboard 30.

In an alternative to swapping the display of the interactive search list30 with the digital keyboard 28, the interactive search list 30 may bedisplayed in a fixed location within the graphical user interface 34. Inanother variation, the interactive search list 30 may be docked with thedigital keyboard 28, when it is repositionable, and displayedcontinuously. With either the docked or fixed location interactivesearch list 30, the results of automated searching are continuouslydisplayed within the interactive search list 30 as the user enterscharacters with the digital keyboard 28 or uses the interactive searchlist 30 itself (as illustrated by block 213B and 254 of FIGS. 23 and24). Activating a docked or fixed location interactive search list 30can be achieved by pausing with the pointing device on a keyboardcharacter selected within the digital keyboard 28. As soon as thepredetermined time limit L1 has expired, the interactive search list 30becomes active. At this point, if the user wishes, the user can selectone of the completion candidates (if any) within the interactive searchlist 30 or the user can return to keyboard mode and continue adding toor otherwise modifying the current partial text entry from the digitalkeyboard 28. In a further variation, the interactive search list 30,when arranged in a docked or fixed location, may be continuously updatedwith potential completion candidates based on the current contents ofthe search string being constructed by the user via the digital keyboard28. In this variation, the user can simply continue adding characters tothe end of the current partial text entry one character at a time viathe digital keyboard 28 so as to continue building the desired word,phrase, or character sequence until such time as the desired completioncandidate or a partial completion candidate thereof appears in theinteractive search list 30. In a further alternative, the interactivesearch list 30, when activated, may be shown superimposed over a portionof the digital keyboard 28.

The digital keyboard 28 may be instructed to make itself visible orinvisible to view on the graphical user interface 34. For instance, inthe first embodiment in FIG. 1 to 5 the digital keyboard 28 may beprogrammed to be displayed on the graphical user interface 34 inresponse to a user selection on the personal computing device, and to behidden (or cleared) from view in response to another user selection.This feature also provides, for example, the option for the application27 to instruct the digital keyboard 28 when to be visible and when to beinvisible. Preferably, the application 27 is programmed to decide whenand where the digital keyboard 28 is to be displayed. This feature canbe applied to many types of personal computing devices including, forexample, where a touch-sensitive screen is used, or where the digitalkeyboard 28 is displayed on a display device that is separate from thehardware input interface 17 such as with a data tablet, a proximitysensing input surface or an equivalent input interface. For example, thehardware input interface can be located on a remote control device usedto control when the digital keyboard 28 is displayed on a television ora remotely located computer display. With a proximity sensing inputsurface, the digital keyboard can be displayed when the pointing deviceis detected within a set predetermined distance of a proximity sensinginput surface, and the digital keyboard can be hidden when the pointingdevice is not detected within the set predetermined distance of theproximity sensing input surface. As another example, if a proximitysensing input surface is used capable of position sensing, then when astylus or the like is lifted a set predetermined distance from theproximity sensing input surface, the application 27 can instruct thedigital keyboard 28 to become invisible so as to swap to full text mode.When the stylus or the like is brought back within the set predetermineddistance of the proximity sensing input surface, the application 27reactivates the display of the digital keyboard 28 over positioncoordinates associated with the position of the pointing device over theproximity sensing input surface or to an area remote to the pointingdevice. Variations on handling text entry with the proximity sensinginput surface are discussed further on below.

The API for the data entry system 26 also allows the application 27 toprogrammatically change the partial text entry which is used forsearching. For example, the user of a text editor might place the cursorafter a word or character sequence and the application 27 could thentell the data entry system 26 to use that word or character sequence asa partial text entry for further searching.

Types of Interactive Search List Layouts

Several alternative layouts for the interactive search list 30 may beused by the data entry system 26. In the first embodiment, a verticallist of completion candidates is used, as further illustrated in FIG.14. In other layouts, completion candidates within the interactivesearch list 30 may be displayed in an X configuration (FIG. 15), in arectangular configuration (FIG. 16), in a cross configuration (FIG. 17),in a T configuration (FIG. 18), or in a horizontal configuration. Withthe X configuration, one completion candidate is preferably locatedslightly offset in the x-axis or y-axis from a central location withinthe X configuration and surrounded by four or more completion candidateslocated within the north-west, north-east, south-west, and south-eastdirections (relative to the central completion candidate displayed).With an X configuration of the search list (like the one above) a uniquedirection is provided for each of the five completion candidatesdisplayed in the list, so as to minimize pen movement. For the crossconfiguration, a substantially centrally displayed completion candidatewithin the interactive search list 30 is surrounded by up to fourcompletion candidates in the north, east, south, and west directions(relative to the central completion candidate displayed).

Interactive Search List Configuration

When the digital keyboard 28 is programmed to share the same displayspace on the graphical user interface 34 as the interactive search list30, it is preferable that the data entry system 26 is also programmed todisplay all completion candidates near the last known positioncoordinates for the pointing device so that they are slightly off-setfrom the x-axis or y-axis of the last known position coordinates so asto minimize the degree to which such completion candidates in theinteractive search list 30 are obscured from the user's view by thepointing device. This feature can be particularly useful when thepointing device is a pen or finger and the user interfaces with atouch-sensitive screen 14. In this way, the interactive search list maybe displayed in a location which makes it easily visible and accessibleto the user.

In another variation, when the digital keyboard 28 and the interactivesearch list 30 are interchangeably displayed, the list of completioncandidates within the interactive search list 30 can be displayed suchthat the most common of the completion candidates is displayed closestto the last known position coordinates of the pointing device while theother completion candidates within the interactive search list 30 aredisplayed further away from the last known position coordinates of thepointing device relative to the most common of the completioncandidates. This variation results in a frequency distributedinteractive search list 30 which can assist in further minimizing theamount of motion required with the pointing device in order to use andselect from the interactive search list 30.

As illustrated in FIG. 19, in another variation, both the digitalkeyboard 28 and the interactive search list 30 may be continuouslydisplayed within fixed separate locations on the graphical userinterface 34, along with a search string window 40 used to display thecurrent contents of the search string. A tool bar 42 may also bedisplayed to identify predefined functions and commands that may beselected by the user while using the data entry system 26. When the toolbar 42 is included in the dynamically re-positionable configuration forthe digital keyboard 28, the tool bar 42 may be repositioned dynamicallyalong with the digital keyboard 28, or the tool bar 42 may be locatedand remain in a fixed location within the graphical user interface 34.As illustrated in FIG. 20, whenever the digital keyboard 28 isdisplayed, with or without the interactive search list 30, a toolbar 42and =additional character layouts 44 may be used to enhance thefunctionality for the user while using the digital keyboard 28.

In another aspect of the present invention, a commonly used word orcharacter sequence may appear in the same position each time such a wordor character sequence is displayed in a search list. This helps the userbecome familiar with the location of such a word or character sequencewithin the search list, and thereby helps the user to access such a wordor character sequence more readily.

In another alternative embodiment, as the user begins to learn theposition of common words within a search list, the user may begin toknow which gesture is required to enter a certain word even before thepredetermined delay period L1 has expired and the search list isdisplayed. In this case, the date entry system 26 may be programmed torecognize such gestures even before the predetermined delay period L1has expired and the interactive search list 30 is displayed.

In another alternative embodiment, the interactive search list maydisplay completion candidates with the part of each completion candidatematching the search string displayed in a different manner (for examplea different color, font, or boldness) than the remaining parts of thecompletion candidates. For example, if the remaining parts weresignificantly bolder than the part of the completion candidates matchingthe search string, the user's eye can be drawn to those portions whichdistinguish the completion candidates on the interactive search listfrom one another, therefore facilitating selection of the desiredcompletion candidate.

Tracking the Movement of the Pointing Device

In another variation, when a stylus (or pen, finger or the like) is usedwith a touch-sensitive or pressure-sensitive input surface (e.g. atouch-sensitive screen, a data tablet or input pad), the data entrysystem 26 may be programmed to determine whether or not the position ofa cursor displayed on the graphical user interface 34 tracks the stylusposition precisely or whether it moves relatively to the stylusmovement. In the first case, if the cursor position tracks the stylusposition precisely, then the stylus and cursor function like a mouse andthe cursor on a conventional user interface and the position of thecursor tracks precisely the position of the stylus tip on the hardwareinput surface (i.e. the last known position coordinates for the stylus).

In the second case, the cursor displayed on the graphical user interface34 is moved by a distance proportional to the movement with the stylus.This latter behaviour can come into effect when the interactive searchlist 30 is displayed. For instance, when moving up a vertical list ofcompletion candidates, the cursor can move up faster than the actualphysical movement of the stylus.

In either case, the stylus (or other pointing device) can be usedlocally on the display device if it is a touch-sensitive screen, orremotely such as with a data tablet, a proximity-sensing inputinterface, or with the character input space on a Palm Pilot™ or anotherhand-held personal computing device.

Using the cursor to track the position coordinates of the pointingdevice can help the user keep their attention on the digital keyboard 28or the interactive search list 30 displayed on the display device 15without having to be distracted with looking at the physical position ofthe pointing device (see, for instance, cursor 48 as illustrated in FIG.27). This can be helpful when, for example, a data tablet or input padis used and is located remote from the display area of the graphicaldisplay device 15 where the digital keyboard 28 or the interactivesearch list 30 (or both) are displayed. Also, using the cursor toremotely track the movement of the stylus, pen or finger provides amechanism for using the digital keyboard 28 and the interactive searchlist 30 without obscuring them from the user's view with the stylus, penor finger.

When the data entry system 26 is programmed to use the cursor toremotely track the movement of the stylus, pen or finger, the cursor maybe displayed over the digital keyboard 28 when the data entry system 26is in keyboard mode, and the cursor may be programmed to relocate to thecenter of the digital keyboard 28 whenever a character from the keyboardor a completion candidate from the interactive search list 30 isselected. Once the cursor is centered in the digital keyboard 28,further movements with the pointing device can be used to makeselections from the digital keyboard 28 as if the pointing device werephysically centered about the center of the digital keyboard 28. In thisvariation, the digital keyboard 28 is displayed in a fixed remotelocation on the graphical user interface 34. With this variation, theuser is not visually distracted by movement of the digital keyboard 28,while enjoying many of the advantages of the dynamically re-positionabledigital keyboard 28. For instance, when the cursor relocates to thecenter of the digital keyboard 28 when the keyboard is active andwaiting for user input, a particular character on the digital keyboard28 remains the same distance and direction from the pointing device nomatter what input was made last with the pointing device. This featureof the cursor enables the user to incorporate unconscious learning andtherefore, learned efficiency. When a frequency distributed keyboardlayout is used with most frequently used characters located near acentral location, relocating the cursor to the center of the digitalkeyboard 28 enables ready access to the characters most likely to bechosen next, thereby reducing finger movement and increasing efficiency.

In one variation, the movement of the cursor need not necessarily bedirectly proportional to the movement of the pointing device. In thisvariation, the data entry system 26 is programmed so that moving thepointing device a small distance equates to moving the cursor a largerdistance on the digital keyboard 28 or the interactive search list 30.This variation uses scaling to minimize the movement required toaccurately distinguish and select characters from the digital keyboard28 and completion candidates from the interactive search list 30. Inanother variation, the distance of the cursor movement may be related bythe data entry system 26 to the speed that the pointing device moves, sothat the faster the movement with the pointing device, the greater thedistance traveled by the cursor, and the slower the movement of thepointing device, the less distance traveled by the cursor on thegraphical user interface 34.

It will be appreciated, as indicated above, that when the pointingdevice is used on a digital keyboard that is displayed in a locationremote from the pointing device, such as where the pointing device is amouse, a finger on a touch sensitive palette, or a stylus. In such casesthe digital keyboard is not displayed under the pointing device, but isviewed on a display device, and pointer motion is seen as relativemotions of a cursor displayed on the digital keyboard. In these casescharacters on the digital keyboard are not obscured.

Obtaining Completion Candidates of Specific Type or Minimum Length

In another aspect of the present invention, a special display areacontaining a series of numbers are displayed as part of or inassociation with the digital keyboard 28 to enable the user to rapidlyinstruct the data entry system 26 to obtain and display in theinteractive search list 30 completion candidates having at least aminimum number of characters. In this aspect, when a user selects one ofthe characters on the digital keyboard 28 followed by one of the numbersin the special display area, the data entry system 26 is programmed tohave the candidate prediction system 32 obtain from the dictionary 20completion candidates beginning with the selected character and havingat least as many characters as the number that was selected by the userfrom the special display area. Alternatively, the user may type in anumber from the special display area, followed by holding down on one ofthe characters on the digital keyboard 28 to instruct the data entrysystem 26 to have the candidate prediction system 32 obtain from thedictionary 20 completion candidates beginning with the selectedcharacter and having at least as many characters as the number that wasselected by the user from the special display area. In anothervariation, the data entry system 26 may be programmed so that when theuser touches a number from the special display area and lifts thepointing device, the data entry system 26 retrieves a list of completioncandidates having a number of characters equal to the number selectedtouched on the special display area. In yet another variation, the dataentry system 26 may be programmed to obtain completion candidates of atleast a predetermined length when the user selects a number from thespecial display area with the pointing device, gestures a significantdistance in a predetermined direction (for example, to the right), liftsup the pointing device, touches down on a character on the digitalkeyboard 28 and then pauses on that character. In yet a furthervariation, another special display area may be included with the digitalkeyboard 28 from which the category of completion candidates can benarrowed. In this further special display area, for example, the dataentry system 26 may be programmed to display general identifiers fornouns, verbs, adjectives, etc. If a general identifier is selected bythe user before the interactive search list 30 is activated, the dataentry system 26 in this variation is programmed to have the candidateprediction system 32 obtain completion candidates that are identified inthe dictionary 20 as falling within the category associated with theselected identifier (for example, only nouns, or only verbs). Thisvariation may be combined with the other aspects herein to assist theuser in obtaining completion candidates of one or more specificcategories identified in the dictionary 20.

In another aspect, a physical button or switch located on the personalcomputing device, or on the pointing device, and within easy reach of auser's finger or hand, may be used to easily activate certain featuresof the data entry system 26. As an example, when the button on thepersonal computing device is pressed, the data entry system 26 may beprogrammed to make, with each press, the digital keyboard 28 invisibleor visible. Alternatively, the data entry system 26 may be programmed torecognize that if the button or switch is pressed, the interactivesearch list 30, when displayed, should display only certain types ofcompletion candidates available within the dictionary. As anotherexample, when the button is depressed, the data entry system 26 may beprogrammed to activate the interactive search list 30. As anotherexample, when the button on the personal computing device is pressed,the data entry system 26 may be programmed to require that theinteractive search list 30 display completion candidates of a certainminimum length of characters.

Proximity Triggered Display of Digital Keyboard

In another variation, a stylus (or pen or finger or like hand-heldpointing device) is used with a proximity sensing input surface.Proximity sensing input surfaces can detect the proximity of a pointingdevice to the input surface as well as the location of the pointingdevice over the proximity sensing input surface. The proximity sensinginput surface may also detect the distance and angle that a pointingdevice is being held relative to the input surface. When a proximitysensing input surface is used, the data entry system 26 can beprogrammed so as to display the digital keyboard 28 (or another digitalkeyboard) with the cursor displayed over it when the stylus approacheswithin a set predetermined distance of the proximity sensing inputsurface. The proximity sensing input surface detects the position of thestylus over the proximity sensing input surface when the stylus iswithin the set predetermined distance. As the user moves the pointingdevice over the proximity sensing input surface, the cursor movescorrespondingly. The digital keyboard 28 can be displayed directlybeneath the stylus in some embodiments or, for other embodiments, remotefrom the stylus. When the stylus is moved away from the proximitysensing input surface further than the set predetermined distance, thedata entry system 26 is programmed to hide (or clear) the digitalkeyboard 28 from the graphical user interface 34. This variation enablesthe entire screen to be used to display text while the digital keyboard28 is hidden. This variation also avoids screen clutter by displayingthe digital keyboard 28 only when the stylus is found to be within theset predetermined distance of the proximity sensing input surface. Atthe same time, the user can quickly and intuitively return to adding toor deleting from the text using the digital keyboard 28 by bringing thestylus within the set predetermined distance of the proximity sensitiveinput surface. Thus, the digital keyboard 28 is displayed when theuser's hand controlling the stylus (the “typing hand”) is placed in anatural position for continuing text and data entry. The location wherethe digital keyboard 28 is displayed on the graphical user interface 34may be near and possibly follow the line of text under construction bythe user, so as to facilitate the eye following the digital keyboard 28and the entered text simultaneously. In another variation, the digitalkeyboard 28 can be displayed in the same location as the stylus. Inanother variation, the digital keyboard 28 is programmed to be displayedjust below or above the line of text that the user is creating orediting on a personal computing device. These variations also allow theuser to view the digital keyboard 28 and the text simultaneously.

As an alternative to the above variation, if the user wishes to use thestylus (or pen or finger) to reposition the cursor within previouslytyped text, the data entry system 26 may be programmed to allow for thecursor to be repositioned within previously typed text with the styluswhile the stylus is within the minimum distance, provided the stylus isdetected as approaching the proximity sensing input surface from aparticular side of the input surface (for example, the right side of theproximity sensing input surface). Once the cursor was repositioned, theuser could then approach the proximity sensing input surface fromanother direction (for example, from above) to trigger the display ofthe digital keyboard 28 to assist with further text entry andmodification.

In the first embodiment, the data entry system 26 is applicationindependent and communicates with applications via an API. In analternative embodiment, the data entry system 26 may be embedded in anapplication.

It will be appreciated that many of the aspects of the present inventionmay be applied to several types of digital keyboards and keyboardlayouts, including traditional keyboard layouts, and rectangularkeyboard layouts. It will also be appreciated that the digital keyboardmay contain other symbols that could encode a language. One example ofthis would be a digital keyboard that contains regions representing thestrokes used in writing an oriental language. The user would select thestrokes by pointing to them, and the characters would be constructedfrom the strokes.

Although this invention has been described with reference toillustrative and preferred embodiments of carrying out the invention,this description is not to be construed in a limiting sense. Variousmodifications of form, arrangement of parts, steps, details and order ofoperations of the embodiments illustrated, as well as other embodimentsof the invention, will be apparent to persons skilled in the art uponreference to this description. It is therefore contemplated that theappended claims will cover such modifications and embodiments as fallwithin the true scope of the invention.

1-92. (canceled)
 93. A method of computer-assisted text generation, themethod comprising: displaying a plurality of characters on atouch-sensitive display; detecting a first type of contact by a userwith the touch-sensitive display that corresponds to selection of any ofthe plurality of characters; displaying a plurality of completioncandidates for user selection; detecting a second type of contact by theuser with the touch-sensitive display that corresponds to selection ofat least one of the plurality of completion candidates, wherein thesecond type of contact includes a gesture; selecting the at least one ofthe plurality of completion candidates corresponding to the gesture;generating a string in response to at least one of the first type ofcontact and the second type of contact; and displaying the string on thetouch-sensitive display.
 94. The method of claim 93, further comprising:storing a set of completion candidates in a dictionary; selecting theplurality of completion candidates from the dictionary based on thefirst type of contact by the user with the touch-sensitive display; anddisplaying the plurality of completion candidates in a search list onthe touch-sensitive display.
 95. The method of claim 94, furthercomprising: obtaining a modified plurality of completion candidates fromthe dictionary in response to modification of the string by the user viaa digital keyboard displayed on the touch-sensitive display, whereineach of the modified plurality of completion candidates begins with thestring as modified by the user via the digital keyboard, and wherein thedigital keyboard comprises the plurality of characters; and displayingthe modified plurality of completion candidates in the search list inplace of the plurality of completion candidates.
 96. The method of claim95, further comprising: obtaining another modified plurality ofcompletion candidates from the dictionary in response to a user inputsignal corresponding to use of a particular completion candidate in thesearch list to retrieve completion candidates from the dictionary thatbegin with the particular completion candidate; and displaying themodified plurality of completion candidates in the search list in placeof the modified plurality of completion candidates.
 97. The method ofclaim 95, further comprising: for each particular completion candidatedisplayed in the search list at any time, displaying the part of theparticular completion candidate matching the string in a mannerdifferent from the remaining part of the particular completioncandidate.
 98. The method of claim 95, further comprising: obtaining theplurality of completion candidates from the dictionary in response todetection of the first type of contact by the user with thetouch-sensitive display, wherein each of the plurality of completioncandidates begins with the string, and wherein the string comprises acharacter sequence.
 99. A method of computer-assisted text generation,the method comprising: displaying a plurality of symbols on thetouch-sensitive display, wherein the plurality of symbols form a digitalkeyboard; detecting a first type of contact by a user with thetouch-sensitive display that corresponds to selection of one of theplurality of symbols; displaying a plurality of words for user selectionin response to the first type of contact; detecting a second type ofcontact by the user with the touch-sensitive display that corresponds toselection of at least one of the plurality of words, wherein the secondtype of contact includes a gesture; and selecting the at least one ofthe plurality of words corresponding to the gesture.
 100. The method ofclaim 99, further comprising generating a string in response to at leastone of the first type of contact and the second type of contact. 101.The method of claim 99, further comprising generating a string inresponse to the first type of contact and the second type of contact.102. The method of claim 101, further comprising displaying theplurality of words in a search list on the touch-sensitive display. 103.The method of claim 102, further comprising: detecting a third type ofcontact by the user with the touch-sensitive display that corresponds tousing one of the plurality of words to obtain additional words from adictionary, wherein the third type of contact includes a further gestureassociated with the one of the plurality of words; obtaining anotherplurality of words from the dictionary for user selection in response tothe further gesture, wherein each of the another plurality of wordsbegins with the one of the plurality of words associated with thefurther gesture; and clearing the search list and displaying the anotherplurality of words in the search list.
 104. The method of claim 103,further comprising displaying simultaneously the search list and thedigital keyboard on the touch-sensitive display when the stringcomprises at least one character.
 105. The method of claim 103, furthercomprising displaying simultaneously the digital keyboard and the searchlist on the touch-sensitive display while the digital keyboard is inuse.
 106. The method of claim 105, further comprising displaying thesearch list while not displaying the digital keyboard in the graphicaluser interface in response to obtaining the another plurality of words.107. A method of computer-assisted text generation, the methodcomprising: displaying on the touch-sensitive display a plurality ofsymbols, wherein the plurality of symbols form a digital keyboard;detecting a first type of contact by a user with the touch-sensitivedisplay that corresponds to selection of one or more of the plurality ofsymbols from the digital keyboard; generating a string containing theone or more symbols of the plurality of symbols selected from thedigital keyboard with the first type of contact; selecting a pluralityof completion candidates from a group of completion candidates,comprising selecting the plurality of completion candidates based on theuser's past pattern of usage of completion candidates from the group ofcompletion candidates; displaying the plurality of completion candidateson the touch-sensitive display, wherein each of the plurality ofcompletion candidates comprises a portion containing the string;detecting a second type of contact by the user with the touch-sensitivedisplay that corresponds to user selection of at least one of theplurality of completion candidates, wherein the second type of contactincludes a gesture; and selecting the at least one of the plurality ofcompletion candidates corresponding to the gesture.
 108. The method ofclaim 107, further comprising: storing the group of completioncandidates in a dictionary; selecting the plurality of completioncandidates from the dictionary based on the first type of contact by theuser with the touch-sensitive display; and displaying the plurality ofcompletion candidates in a search list on the touch-sensitive display.109. The method of claim 108, further comprising: obtaining a modifiedplurality of completion candidates from the dictionary in response tomodification of the string by the user via the digital keyboard, whereineach of the modified plurality of completion candidates begins with thestring as modified by the user via the digital keyboard; clearing thesearch list; and displaying the modified plurality of completioncandidates in the search list.
 110. The method of claim 109, furthercomprising: obtaining another modified plurality of completioncandidates from the dictionary in response to a user input signalcorresponding to use of a particular completion candidate in the searchlist to retrieve completion candidates from the dictionary that beginwith the particular completion candidate; clearing the search list; anddisplaying the modified plurality of completion candidates in the searchlist.
 111. The method of claim 109, further comprising: for eachparticular completion candidate displayed in the search list at anytime, displaying the part of the particular completion candidatematching the string in a manner different from the remaining part of theparticular completion candidate.
 112. The method of claim 109, furthercomprising: modifying the string in response to selection by the user ofa particular completion candidate displayed in the search list, whereinthe string is modified to match the particular completion candidate.113. The method of claim 108, further comprising: obtaining a modifiedplurality of completion candidates from the dictionary in response to auser input signal corresponding to use of a particular completioncandidate in the search list to retrieve completion candidates from thedictionary that begin with the particular completion candidate; clearingthe search list; and displaying the modified plurality of completioncandidates in the search list.
 114. The method of claim 108, furthercomprising: for each particular completion candidate displayed in thesearch list at any time, displaying the part of the particularcompletion candidate matching the string in a manner different from theremaining part of the particular completion candidate.
 115. The methodof claim 108, wherein each of the plurality of completion candidatesbegins with the string.
 116. A method of computer-assisted textgeneration, the method comprising: displaying a digital keyboard on thetouch-sensitive display; displaying on the touch-sensitive display aplurality of symbols associated with a key on the digital keyboard;detecting a contact by a user with the touch-sensitive display thatcorresponds to user selection of one of the plurality of symbols,wherein the contact includes a gesture; and selecting one of theplurality of symbols based on the gesture, wherein the selected one ofthe plurality of symbols forms part of a user entry displayed on thetouch-sensitive display.